[ONOS-4799],[ONOS-4351] Augment inter file linker and Generated Code refactored.
Change-Id: Id1f3ac9c90a632373f51cc75d499c3110216be17
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
index 2ffd282..87e4679 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/GeneratedTempFileType.java
@@ -122,6 +122,11 @@
public static final int EVENT_SUBJECT_SETTER_MASK = 524288;
/**
+ * Event subject setter implementation of class.
+ */
+ public static final int AUGMENTE_CLASS_CONSTRUCTOR_MASK = 1048576;
+
+ /**
* Creates an instance of generated temp file type.
*/
private GeneratedTempFileType() {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index b1c36ec..3389659 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -21,10 +21,6 @@
import java.util.TreeSet;
import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT_EVENT;
-import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION_HOLDER_CLASS_IMPORT_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO_CLASS_IMPORT_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO_CLASS_IMPORT_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER;
@@ -40,9 +36,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.ONOS_EVENT_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
-import static org.onosproject.yangutils.utils.UtilConstants.PROVIDED_AUGMENTATION_CLASS_IMPORT_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
-
import static java.util.Collections.sort;
/**
@@ -220,33 +214,6 @@
}
/**
- * Returns import for array list attribute.
- *
- * @return import for array list attribute
- */
- public String getImportForArrayList() {
- return IMPORT + COLLECTION_IMPORTS + PERIOD + ARRAY_LIST + SEMI_COLAN + NEW_LINE;
- }
-
- /**
- * Returns import string for AugmentationHolder class.
- *
- * @return import string for AugmentationHolder class
- */
- public String getAugmentationHolderImport() {
- return IMPORT + PROVIDED_AUGMENTATION_CLASS_IMPORT_PKG + PERIOD + AUGMENTATION_HOLDER_CLASS_IMPORT_CLASS;
- }
-
- /**
- * Returns import string for AugmentedInfo class.
- *
- * @return import string for AugmentedInfo class
- */
- public String getAugmentedInfoImport() {
- return IMPORT + AUGMENTED_INFO_CLASS_IMPORT_PKG + PERIOD + AUGMENTED_INFO_CLASS_IMPORT_CLASS;
- }
-
- /**
* Returns import string for ListenerService class.
*
* @return import string for ListenerService class
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
index 9ae2986..39ce34f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
@@ -23,7 +23,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructor;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
/**
* Represents implementation of java bean code fragments temporary implementations.
@@ -88,7 +88,7 @@
*/
private void addConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
throws IOException {
- appendToFile(getConstructorImplTempFileHandle(), getConstructor(getGeneratedJavaClassName(), attr,
+ appendToFile(getConstructorImplTempFileHandle(), getConstructor(attr,
getGeneratedJavaFiles(), pluginConfig));
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index d383a43..09471cd 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -36,7 +36,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEnumClassFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 03ace2a..bbc346d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -29,6 +29,7 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugment;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGrouping;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
@@ -44,6 +45,7 @@
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.AUGMENTE_CLASS_CONSTRUCTOR_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;
@@ -63,10 +65,8 @@
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;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentedConstructor;
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;
@@ -80,17 +80,13 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.parseBuilderInterfaceBuildMethodString;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addArrayListImport;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addAugmentationHoldersImport;
-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.isAugmentationHolderExtended;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.isAugmentedInfoExtended;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.sortImports;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.sortImports;
import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT;
import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
@@ -104,12 +100,14 @@
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.translator.tojava.utils.JavaIdentifierSyntax.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.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.mergeJavaFiles;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
@@ -227,6 +225,10 @@
private static final String IMPL_CLASS_FILE_NAME_SUFFIX = IMPL;
/**
+ * File name for augment copy constructor method.
+ */
+ private static final String AUGMENT_CONSTRUCTOR_FILE_NAME = "AugmentConstructor";
+ /**
* Java file handle for interface file.
*/
private File interfaceJavaFileHandle;
@@ -302,6 +304,11 @@
private boolean isAttributePresent;
/**
+ * Temporary file handle for augments copy constructor method of class.
+ */
+ private File augmentConstructorImplTempFileHandle;
+
+ /**
* Retrieves the absolute path where the file needs to be generated.
*
* @return absolute path where the file needs to be generated
@@ -539,6 +546,7 @@
addGeneratedTempFile(ATTRIBUTES_MASK);
addGeneratedTempFile(GETTER_FOR_CLASS_MASK);
addGeneratedTempFile(SETTER_FOR_CLASS_MASK);
+ addGeneratedTempFile(AUGMENTE_CLASS_CONSTRUCTOR_MASK);
}
/*
@@ -617,6 +625,9 @@
if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
setFromStringImplTempFileHandle(getTemporaryFileHandle(FROM_STRING_METHOD_FILE_NAME));
}
+ if ((getGeneratedTempFiles() & AUGMENTE_CLASS_CONSTRUCTOR_MASK) != 0) {
+ setAugmentConstructorImplTempFileHandle(getTemporaryFileHandle(AUGMENT_CONSTRUCTOR_FILE_NAME));
+ }
}
@@ -801,6 +812,24 @@
}
/**
+ * Returns augments copy constructor method impl class file.
+ *
+ * @return augments copy constructor method impl class file
+ */
+ public File getAugmentConstructorImplTempFileHandle() {
+ return augmentConstructorImplTempFileHandle;
+ }
+
+ /**
+ * Sets augments copy constructor method impl class.
+ *
+ * @param augmentConstructorImplTempFileHandle augments copy constructor method impl class file
+ */
+ public void setAugmentConstructorImplTempFileHandle(File augmentConstructorImplTempFileHandle) {
+ this.augmentConstructorImplTempFileHandle = augmentConstructorImplTempFileHandle;
+ }
+
+ /**
* Adds attribute for class.
*
* @param attr attribute info
@@ -966,13 +995,24 @@
* @throws IOException when fails to append to temporary file
*/
private void addFromStringMethod(JavaAttributeInfo javaAttributeInfo,
- JavaAttributeInfo fromStringAttributeInfo)
+ JavaAttributeInfo fromStringAttributeInfo)
throws IOException {
appendToFile(getFromStringImplTempFileHandle(), getFromStringMethod(javaAttributeInfo,
fromStringAttributeInfo) + NEW_LINE);
}
/**
+ * Adds constructor for augment class.
+ *
+ * @param attr attribute info
+ * @throws IOException when fails to append to temporary file
+ */
+ private void addAugmentConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+ throws IOException {
+ appendToFile(getAugmentConstructorImplTempFileHandle(), getAugmentedConstructor(attr, pluginConfig));
+ }
+
+ /**
* Returns a temporary file handle for the specific file type.
*
* @param fileName file name
@@ -981,7 +1021,7 @@
*/
File getTemporaryFileHandle(String fileName)
throws IOException {
- String path = getTempDirPath();
+ String path = getTempDirPath(getAbsoluteDirPath());
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
@@ -1011,13 +1051,14 @@
* Returns data from the temporary files.
*
* @param file temporary file handle
+ * @param absolutePath absolute path
* @return stored data from temporary files
* @throws IOException when failed to get data from the given file
*/
- public String getTemporaryDataFromFileHandle(File file)
+ public String getTemporaryDataFromFileHandle(File file, String absolutePath)
throws IOException {
- String path = getTempDirPath();
+ String path = getTempDirPath(absolutePath);
if (new File(path + file.getName()).exists()) {
return readAppendFile(path + file.getName(), EMPTY_STRING);
} else {
@@ -1029,10 +1070,11 @@
/**
* Returns temporary directory path.
*
+ * @param absolutePath absolute path
* @return directory path
*/
- String getTempDirPath() {
- return getPackageDirPathFromJavaJPackage(getAbsoluteDirPath()) + SLASH + getGeneratedJavaClassName()
+ String getTempDirPath(String absolutePath) {
+ return getPackageDirPathFromJavaJPackage(absolutePath) + SLASH + getGeneratedJavaClassName()
+ TEMP_FOLDER_NAME_SUFIX + SLASH;
}
@@ -1084,7 +1126,7 @@
* @throws IOException IO operation exception
*/
public static void addCurNodeInfoInParentTempFile(YangNode curNode,
- boolean isList, YangPluginConfig pluginConfig)
+ boolean isList, YangPluginConfig pluginConfig)
throws IOException {
YangNode parent = getParentNodeInGenCode(curNode);
if (!(parent instanceof JavaCodeGenerator)) {
@@ -1118,7 +1160,7 @@
* @throws IOException IO operation exception
*/
public static void addCurNodeAsAttributeInTargetTempFile(YangNode curNode,
- YangPluginConfig pluginConfig, YangNode targetNode)
+ YangPluginConfig pluginConfig, YangNode targetNode)
throws IOException {
if (!(targetNode instanceof JavaCodeGenerator)) {
@@ -1156,7 +1198,7 @@
* files
*/
public static JavaAttributeInfo getCurNodeAsAttributeInTarget(YangNode curNode,
- YangNode targetNode, boolean isListNode) {
+ YangNode targetNode, boolean isListNode) {
String curNodeName = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName();
if (curNodeName == null) {
updateJavaFileInfo(curNode, null);
@@ -1179,11 +1221,11 @@
boolean isQualified;
if ((targetNode instanceof YangJavaModule || targetNode instanceof YangJavaSubModule)
&& (qualifiedTypeInfo.getClassInfo().contentEquals(SERVICE)
- || qualifiedTypeInfo.getClassInfo().contentEquals(COMPONENT)
- || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(ACTIVATE))
- || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(DEACTIVATE))
- || qualifiedTypeInfo.getClassInfo().contentEquals(REFERENCE_CARDINALITY)
- || qualifiedTypeInfo.getClassInfo().contentEquals(REFERENCE))
+ || qualifiedTypeInfo.getClassInfo().contentEquals(COMPONENT)
+ || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(ACTIVATE))
+ || qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(DEACTIVATE))
+ || qualifiedTypeInfo.getClassInfo().contentEquals(REFERENCE_CARDINALITY)
+ || qualifiedTypeInfo.getClassInfo().contentEquals(REFERENCE))
|| qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + SERVICE))
|| qualifiedTypeInfo.getClassInfo().contentEquals(getCapitalCase(fileInfo.getJavaName() + MANAGER))) {
@@ -1208,63 +1250,6 @@
}
/**
- * Resolves groupings java qualified info.
- *
- * @param curNode grouping node
- * @param pluginConfig plugin configurations
- * @return groupings java qualified info
- */
- public static JavaQualifiedTypeInfo resolveGroupingsQuailifiedInfo(YangNode curNode,
- YangPluginConfig pluginConfig) {
-
- JavaFileInfo groupingFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
- JavaQualifiedTypeInfo qualifiedTypeInfo = new JavaQualifiedTypeInfo();
- if (groupingFileInfo.getPackage() == null) {
- List<String> parentNames = new ArrayList<>();
-
- YangNode tempNode = curNode.getParent();
- YangNode groupingSuperParent = null;
- while (tempNode != null) {
- parentNames.add(tempNode.getName());
- groupingSuperParent = tempNode;
- tempNode = tempNode.getParent();
- }
-
- String pkg = null;
- JavaFileInfo parentInfo = ((JavaFileInfoContainer) groupingSuperParent).getJavaFileInfo();
- if (parentInfo.getPackage() == null) {
- if (groupingSuperParent instanceof YangJavaModule) {
- YangJavaModule module = (YangJavaModule) groupingSuperParent;
- String modulePkg = getRootPackage(module.getVersion(), module.getNameSpace().getUri(), module
- .getRevision().getRevDate(), pluginConfig.getConflictResolver());
- pkg = modulePkg;
- } else if (groupingSuperParent instanceof YangJavaSubModule) {
- YangJavaSubModule submodule = (YangJavaSubModule) groupingSuperParent;
- String subModulePkg = getRootPackage(submodule.getVersion(),
- submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
- submodule.getRevision().getRevDate(), pluginConfig.getConflictResolver());
- pkg = subModulePkg;
- }
- } else {
- pkg = parentInfo.getPackage();
- }
- for (String name : parentNames) {
- pkg = pkg + PERIOD + getCamelCase(name, pluginConfig.getConflictResolver());
- }
-
- qualifiedTypeInfo.setPkgInfo(pkg.toLowerCase());
- qualifiedTypeInfo.setClassInfo(
- getCapitalCase(getCamelCase(curNode.getName(), pluginConfig.getConflictResolver())));
- return qualifiedTypeInfo;
-
- } else {
- qualifiedTypeInfo.setPkgInfo(groupingFileInfo.getPackage().toLowerCase());
- qualifiedTypeInfo.setClassInfo(getCapitalCase(groupingFileInfo.getJavaName()));
- return qualifiedTypeInfo;
- }
- }
-
- /**
* Returns interface fragment files for node.
*
* @param node YANG node
@@ -1308,7 +1293,7 @@
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
.getBeanTempFiles().getJavaImportData().addImportInfo(caseImportInfo,
- getCapitalCase(fileInfo.getJavaName()), fileInfo.getPackage());
+ getCapitalCase(fileInfo.getJavaName()), fileInfo.getPackage());
}
/**
@@ -1319,28 +1304,40 @@
* @throws IOException IO operation fail
*/
public void addLeavesInfoToTempFiles(List<YangLeaf> listOfLeaves,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (listOfLeaves != null) {
for (YangLeaf leaf : listOfLeaves) {
if (!(leaf instanceof JavaLeafInfoContainer)) {
throw new TranslatorException("Leaf does not have java information");
}
- JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leaf;
- javaLeaf.setConflictResolveConfig(yangPluginConfig.getConflictResolver());
- javaLeaf.updateJavaQualifiedInfo();
- JavaAttributeInfo javaAttributeInfo = getAttributeInfoForTheData(
- javaLeaf.getJavaQualifiedInfo(),
- javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
- javaLeaf.getDataType(),
- getIsQualifiedAccessOrAddToImportList(javaLeaf.getJavaQualifiedInfo()),
- false);
- addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo, yangPluginConfig);
+ addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeaf(leaf, yangPluginConfig),
+ yangPluginConfig);
}
}
}
/**
+ * Returns java attribute for leaf.
+ *
+ * @param leaf YANG leaf
+ * @param yangPluginConfig plugin configurations
+ * @return java attribute for leaf
+ */
+ private JavaAttributeInfo getJavaAttributeOfLeaf(YangLeaf leaf,
+ YangPluginConfig yangPluginConfig) {
+ JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leaf;
+ javaLeaf.setConflictResolveConfig(yangPluginConfig.getConflictResolver());
+ javaLeaf.updateJavaQualifiedInfo();
+ return getAttributeInfoForTheData(
+ javaLeaf.getJavaQualifiedInfo(),
+ javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
+ javaLeaf.getDataType(),
+ getIsQualifiedAccessOrAddToImportList(javaLeaf.getJavaQualifiedInfo()),
+ false);
+ }
+
+ /**
* Adds leaf list's attributes in generated files.
*
* @param listOfLeafList list of YANG leaves
@@ -1354,22 +1351,33 @@
if (!(leafList instanceof JavaLeafInfoContainer)) {
throw new TranslatorException("Leaf-list does not have java information");
}
- JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leafList;
- javaLeaf.setConflictResolveConfig(yangPluginConfig.getConflictResolver());
- javaLeaf.updateJavaQualifiedInfo();
- getJavaImportData().setIfListImported(true);
- JavaAttributeInfo javaAttributeInfo = getAttributeInfoForTheData(
- javaLeaf.getJavaQualifiedInfo(),
- javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
- javaLeaf.getDataType(),
- getIsQualifiedAccessOrAddToImportList(javaLeaf.getJavaQualifiedInfo()),
- true);
- addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo, yangPluginConfig);
+ addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeOfLeafList(leafList, yangPluginConfig),
+ yangPluginConfig);
}
}
}
/**
+ * Returns java attribute for leaf-list.
+ *
+ * @param leafList YANG leaf-list
+ * @param yangPluginConfig plugin configurations
+ * @return java attribute for leaf-list
+ */
+ private JavaAttributeInfo getJavaAttributeOfLeafList(YangLeafList leafList, YangPluginConfig yangPluginConfig) {
+ JavaLeafInfoContainer javaLeaf = (JavaLeafInfoContainer) leafList;
+ javaLeaf.setConflictResolveConfig(yangPluginConfig.getConflictResolver());
+ javaLeaf.updateJavaQualifiedInfo();
+ getJavaImportData().setIfListImported(true);
+ return getAttributeInfoForTheData(
+ javaLeaf.getJavaQualifiedInfo(),
+ javaLeaf.getJavaName(yangPluginConfig.getConflictResolver()),
+ javaLeaf.getDataType(),
+ getIsQualifiedAccessOrAddToImportList(javaLeaf.getJavaQualifiedInfo()),
+ true);
+ }
+
+ /**
* Adds all the leaves in the current data model node as part of the
* generated temporary file.
*
@@ -1378,7 +1386,7 @@
* @throws IOException IO operation fail
*/
public void addCurNodeLeavesInfoToTempFiles(YangNode curNode,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (!(curNode instanceof YangLeavesHolder)) {
throw new TranslatorException("Data model node does not have any leaves");
@@ -1455,6 +1463,15 @@
}
/**
+ * Returns java class name.
+ *
+ * @return java class name
+ */
+ String getImplClassName() {
+ return getCapitalCase(DEFAULT) + getCapitalCase(getJavaFileInfo().getJavaName());
+ }
+
+ /**
* Returns the directory path.
*
* @return directory path
@@ -1475,6 +1492,8 @@
List<String> imports = new ArrayList<>();
imports = getJavaImportData().getImports();
+ JavaFileInfo curInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+
createPackage(curNode);
/*
@@ -1505,50 +1524,50 @@
validateLineLength(getInterfaceJavaFileHandle());
}
insertDataIntoJavaFile(getInterfaceJavaFileHandle(), getJavaClassDefClose());
- if (isAugmentationHolderExtended(getJavaExtendsListHolder().getExtendsList())) {
- addAugmentationHoldersImport(curNode, imports, false);
- }
- if (isAugmentedInfoExtended(getJavaExtendsListHolder().getExtendsList())) {
- addAugmentedInfoImport(curNode, imports, false);
- }
+
if (curNode instanceof YangCase) {
removeCaseImport(imports);
}
+ if (curNode instanceof YangJavaAugment) {
+ updateAugmentConstructorTempFile(curNode, curInfo.getPluginConfig());
+ YangJavaAugment augment = (YangJavaAugment) curNode;
+ List<JavaQualifiedTypeInfo> infoList = augment.getExtendedClassInfo();
+ for (JavaQualifiedTypeInfo info : infoList) {
+ if (info.getClassInfo()
+ .equals(getCapitalCase(getCamelCase(augment.getAugmentedNode().getName(), null)))) {
+ removeAugmentedImport(imports, info);
+ }
+
+ }
+ }
}
if ((fileType & BUILDER_CLASS_MASK) != 0 || (fileType & IMPL_CLASS_MASK) != 0) {
if (isAttributePresent()) {
addImportsToStringAndHasCodeMethods(curNode, imports);
}
- if (isAugmentationHolderExtended(getJavaExtendsListHolder().getExtendsList())) {
- 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()));
- /*
* Create impl class file.
*/
- if ((fileType & IMPL_CLASS_MASK) != 0) {
- setImplClassJavaFileHandle(getJavaFileHandle(getJavaClassName(IMPL_CLASS_FILE_NAME_SUFFIX)));
- setImplClassJavaFileHandle(
- generateImplClassFile(getImplClassJavaFileHandle(), curNode, isAttributePresent()));
+ setImplClassJavaFileHandle(getJavaFileHandle(getImplClassName()));
+ setImplClassJavaFileHandle(
+ generateImplClassFile(getImplClassJavaFileHandle(), curNode, isAttributePresent(), imports));
+
+ /*
+ * Create builder class file.
+ */
+ if ((fileType & BUILDER_CLASS_MASK) != 0) {
+ setBuilderClassJavaFileHandle(getJavaFileHandle(getJavaClassName(BUILDER_CLASS_FILE_NAME_SUFFIX)));
+ setBuilderClassJavaFileHandle(
+ generateBuilderClassFile(getBuilderClassJavaFileHandle(), curNode,
+ isAttributePresent()));
/*
* Append impl class to builder class and close it.
*/
- mergeJavaFiles(getImplClassJavaFileHandle(), getBuilderClassJavaFileHandle());
- validateLineLength(getBuilderClassJavaFileHandle());
+ mergeJavaFiles(getBuilderClassJavaFileHandle(), getImplClassJavaFileHandle());
+ validateLineLength(getImplClassJavaFileHandle());
}
- insertDataIntoJavaFile(getBuilderClassJavaFileHandle(), getJavaClassDefClose());
- if (isAugmentationHolderExtended(getJavaExtendsListHolder().getExtendsList())) {
- addAugmentedInfoImport(curNode, imports, false);
- addArrayListImport(curNode, imports, false);
- }
+ insertDataIntoJavaFile(getImplClassJavaFileHandle(), getJavaClassDefClose());
}
/*
* Close all the file handles.
@@ -1557,6 +1576,47 @@
}
/**
+ * Updates augment constructor temp file.
+ *
+ * @param curNode current augment node
+ * @param pluginConfig plugin configurations
+ * @throws IOException when fails to do IO operations
+ */
+ private void updateAugmentConstructorTempFile(YangNode curNode, YangPluginConfig pluginConfig)
+ throws IOException {
+ YangJavaAugment augment = (YangJavaAugment) curNode;
+
+ YangNode augmentedNode = augment.getAugmentedNode();
+ if (augmentedNode instanceof YangLeavesHolder) {
+ YangLeavesHolder holder = (YangLeavesHolder) augmentedNode;
+ if (holder.getListOfLeaf() != null) {
+ for (YangLeaf leaf : holder.getListOfLeaf()) {
+ addAugmentConstructor(getJavaAttributeOfLeaf(leaf,
+ pluginConfig), pluginConfig);
+ }
+
+ }
+ if (holder.getListOfLeafList() != null) {
+ for (YangLeafList leafList : holder.getListOfLeafList()) {
+ addAugmentConstructor(getJavaAttributeOfLeafList(leafList,
+ pluginConfig), pluginConfig);
+ }
+
+ }
+ }
+ augmentedNode = augmentedNode.getChild();
+ boolean isList = false;
+ while (augmentedNode != null) {
+ if (augmentedNode instanceof YangList) {
+ isList = true;
+ }
+ addAugmentConstructor(getCurNodeAsAttributeInTarget(augmentedNode, augment, isList), pluginConfig);
+ augmentedNode = augmentedNode.getNextSibling();
+ }
+
+ }
+
+ /**
* Adds imports for ToString and HashCodeMethod.
*
* @param curNode current YANG node
@@ -1570,6 +1630,27 @@
}
/**
+ * Removes augmented node import info from import list.
+ *
+ * @param imports list of imports
+ * @return import for class
+ */
+ private List<String> removeAugmentedImport(List<String> imports, JavaQualifiedTypeInfo augmentedInfo) {
+ String augmentedNodeImport = null;
+ if (imports != null && augmentedInfo != null) {
+ augmentedNodeImport = IMPORT + augmentedInfo.getPkgInfo() + PERIOD + getCapitalCase(DEFAULT)
+ + augmentedInfo.getClassInfo() + PERIOD + augmentedInfo.getClassInfo()
+ + BUILDER + SEMI_COLAN + NEW_LINE;
+ imports.remove(augmentedNodeImport);
+ augmentedNodeImport = IMPORT + augmentedInfo.getPkgInfo() + PERIOD
+ + augmentedInfo.getClassInfo() + PERIOD + augmentedInfo.getClassInfo()
+ + BUILDER + SEMI_COLAN + NEW_LINE;
+ imports.remove(augmentedNodeImport);
+ }
+ return imports;
+ }
+
+ /**
* Removes case import info from import list.
*
* @param imports list of imports
@@ -1602,13 +1683,13 @@
closeFile(getInterfaceJavaFileHandle(), isError);
}
if ((getGeneratedJavaFiles() & BUILDER_CLASS_MASK) != 0) {
- closeFile(getBuilderClassJavaFileHandle(), isError);
+ closeFile(getBuilderClassJavaFileHandle(), true);
}
if ((getGeneratedJavaFiles() & BUILDER_INTERFACE_MASK) != 0) {
closeFile(getBuilderInterfaceJavaFileHandle(), true);
}
if ((getGeneratedJavaFiles() & IMPL_CLASS_MASK) != 0) {
- closeFile(getImplClassJavaFileHandle(), true);
+ closeFile(getImplClassJavaFileHandle(), isError);
}
/*
@@ -1632,6 +1713,9 @@
if ((getGeneratedTempFiles() & FROM_STRING_IMPL_MASK) != 0) {
closeFile(getFromStringImplTempFileHandle(), true);
}
+ if ((getGeneratedTempFiles() & AUGMENTE_CLASS_CONSTRUCTOR_MASK) != 0) {
+ closeFile(getAugmentConstructorImplTempFileHandle(), true);
+ }
}
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index e5a7308..9cbe1fc 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -27,7 +27,6 @@
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_ENUM_MASK;
@@ -54,9 +53,9 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcManagerMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcServiceMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForClass;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addAnnotationsImports;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addListnersImport;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAnnotationsImports;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addListenersImport;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
@@ -390,7 +389,7 @@
}
if (isNotification) {
- addListnersImport(curNode, imports, true, LISTENER_SERVICE);
+ addListenersImport(curNode, imports, true, LISTENER_SERVICE);
}
/**
* Creates rpc interface file.
@@ -399,8 +398,8 @@
generateServiceInterfaceFile(getServiceInterfaceJavaFileHandle(), curNode, imports, isAttributePresent());
if (isNotification) {
- addListnersImport(curNode, imports, false, LISTENER_SERVICE);
- addListnersImport(curNode, imports, true, LISTENER_REG);
+ addListenersImport(curNode, imports, false, LISTENER_SERVICE);
+ addListenersImport(curNode, imports, true, LISTENER_REG);
}
addAnnotationsImports(imports, true);
/**
@@ -411,14 +410,14 @@
insertDataIntoJavaFile(getManagerJavaFileHandle(), getJavaClassDefClose());
if (isNotification) {
- addListnersImport(curNode, imports, false, LISTENER_REG);
+ addListenersImport(curNode, imports, false, LISTENER_REG);
}
addAnnotationsImports(imports, false);
if (isNotification) {
- generateEventJavaFile(GENERATE_EVENT_CLASS, curNode);
+ generateEventJavaFile(curNode);
generateEventListenerJavaFile(GENERATE_EVENT_LISTENER_INTERFACE, curNode);
- generateEventSubjectJavaFile(GENERATE_EVENT_SUBJECT_CLASS, curNode);
+ generateEventSubjectJavaFile(curNode);
}
/**
@@ -478,11 +477,10 @@
/**
* Constructs java code exit.
*
- * @param fileType generated file type
* @param curNode current YANG node
* @throws IOException when fails to generate java files
*/
- public void generateEventJavaFile(int fileType, YangNode curNode)
+ public void generateEventJavaFile(YangNode curNode)
throws IOException {
List<String> imports = new ArrayList<>();
@@ -536,11 +534,10 @@
/**
* Constructs java code exit.
*
- * @param fileType generated file type
* @param curNode current YANG node
* @throws IOException when fails to generate java files
*/
- public void generateEventSubjectJavaFile(int fileType, YangNode curNode)
+ public void generateEventSubjectJavaFile(YangNode curNode)
throws IOException {
String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
@@ -778,7 +775,7 @@
/**
* Returns a temporary file handle for the event's file type.
*
- * @param fileName file name
+ * @param name file name
* @return temporary file handle
* @throws IOException when fails to create new file handle
*/
@@ -786,9 +783,10 @@
throws IOException {
JavaFileInfo parentInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+ JavaFileInfo childInfo = ((JavaFileInfoContainer) curNode.getChild()).getJavaFileInfo();
return getFileObject(getDirPath(parentInfo), name, JAVA_FILE_EXTENSION,
- parentInfo);
+ childInfo);
}
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 989ac0c..69c9b1d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -39,7 +39,7 @@
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.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;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java
index cc54b24..ef185fa 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugment.java
@@ -16,17 +16,22 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
import org.onosproject.yangutils.datamodel.YangAugment;
+import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
/**
* Represents augment information extended to support java code generation.
@@ -38,11 +43,21 @@
private static final long serialVersionUID = 806201632L;
/**
+ * Prefix to be added to generated java file for augment node.
+ */
+ private static final String AUGMENTED = "Augmented";
+
+ /**
* Contains the information of the java file being generated.
*/
private JavaFileInfo javaFileInfo;
/**
+ * TargetNodes java qualified info.
+ */
+ private List<JavaQualifiedTypeInfo> extendedClassInfo;
+
+ /**
* File handle to maintain temporary java code fragments as per the code
* snippet types.
*/
@@ -54,6 +69,7 @@
public YangJavaAugment() {
super();
setJavaFileInfo(new JavaFileInfo());
+ setExtendedClassInfo(new ArrayList<>());
getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
}
@@ -130,4 +146,46 @@
throw new TranslatorException("Failed to generate code for augmentable node " + getName());
}
}
+
+ /**
+ * Returns augment class name.
+ *
+ * @return augment class name
+ */
+ public String getAugmentClassName() {
+ YangNodeIdentifier nodeId = getTargetNode().get(getTargetNode().size() - 1).getNodeIdentifier();
+ if (nodeId.getPrefix() != null) {
+ return AUGMENTED + getCapitalCase(nodeId.getPrefix()) + getCapitalCase(nodeId.getName());
+ } else {
+ return AUGMENTED + getCapitalCase(nodeId.getName());
+ }
+ }
+
+ /**
+ * Returns extended class info.
+ *
+ * @return extended class info
+ */
+ public List<JavaQualifiedTypeInfo> getExtendedClassInfo() {
+ return extendedClassInfo;
+ }
+
+ /**
+ * Sets extended class info.
+ *
+ * @param augmentedInfo extended class info
+ */
+ private void setExtendedClassInfo(List<JavaQualifiedTypeInfo> augmentedInfo) {
+ extendedClassInfo = augmentedInfo;
+ }
+
+ /**
+ * Adds to extended class info list.
+ *
+ * @param augmentedInfo extended class info
+ */
+ public void addToExtendedClassInfo(JavaQualifiedTypeInfo augmentedInfo) {
+ getExtendedClassInfo().add(augmentedInfo);
+ }
+
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentity.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentity.java
index ec0e637..a73a5b4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentity.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentity.java
@@ -35,7 +35,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile;
+import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java
index 8687115..582b9b5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModelUtils.java
@@ -16,12 +16,18 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
+import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
+import org.onosproject.yangutils.datamodel.YangGrouping;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangTypeDef;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -38,7 +44,12 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
+import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
@@ -62,12 +73,17 @@
* @throws IOException IO operations fails
*/
public static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
- javaCodeGeneratorInfo.getJavaFileInfo()
- .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
- yangPluginConfig.getConflictResolver()));
+ if (javaCodeGeneratorInfo instanceof YangJavaAugment) {
+ javaCodeGeneratorInfo.getJavaFileInfo()
+ .setJavaName(((YangJavaAugment) javaCodeGeneratorInfo).getAugmentClassName());
+ } else {
+ javaCodeGeneratorInfo.getJavaFileInfo()
+ .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
+ yangPluginConfig.getConflictResolver()));
+ }
javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
@@ -83,15 +99,14 @@
* @throws IOException IO operations fails
*/
private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin,
- String pkg)
- throws IOException {
+ String pkg) throws IOException {
javaCodeGeneratorInfo.getJavaFileInfo()
.setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
yangPlugin.getConflictResolver()));
javaCodeGeneratorInfo.getJavaFileInfo().setPackage(pkg);
javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
- javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir());
+ javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getManagerCodeGenDir());
javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPlugin);
}
@@ -114,7 +129,7 @@
* @throws IOException IO operations fails
*/
private static void updateTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (javaCodeGeneratorInfo instanceof RpcNotificationContainer) {
/*
@@ -174,7 +189,7 @@
* @throws IOException IO operations fails
*/
private static void generateTempFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
throw new TranslatorException("translation is not supported for the node");
@@ -192,7 +207,7 @@
* @throws IOException when fails to do IO operations
*/
private static void updateNotificaitonNodeInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
if ((YangNode) javaCodeGeneratorInfo instanceof YangJavaModule) {
for (YangNode notificaiton : ((YangJavaModule) javaCodeGeneratorInfo).getNotificationNodes()) {
@@ -220,7 +235,7 @@
* @throws IOException IO operations fails
*/
public static void generateCodeAndUpdateInParent(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPlugin, boolean isMultiInstance)
+ YangPluginConfig yangPlugin, boolean isMultiInstance)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
throw new TranslatorException("Invalid node for translation");
@@ -245,7 +260,7 @@
* @throws IOException IO operations fails
*/
public static void generateCodeOfAugmentableNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPlugin)
+ YangPluginConfig yangPlugin)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
throw new TranslatorException("invalid node for translation");
@@ -253,26 +268,44 @@
generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
- /*
- TODO: Need to use this, when augmentation is added in YMS
- * For augmentation of nodes.
-
- if (javaCodeGeneratorInfo instanceof YangAugmentationHolder) {
- JavaQualifiedTypeInfo augmentationHoldersInfo = new JavaQualifiedTypeInfo();
- augmentationHoldersInfo.setClassInfo(AUGMENTATION_HOLDER);
- augmentationHoldersInfo.setPkgInfo(PROVIDED_AUGMENTATION_CLASS_IMPORT_PKG);
+ if (javaCodeGeneratorInfo instanceof YangJavaAugment) {
+ JavaQualifiedTypeInfo augmentedBuilderInfo = new JavaQualifiedTypeInfo();
+ JavaQualifiedTypeInfo augmentedBuilderClassInfo = new JavaQualifiedTypeInfo();
+ JavaQualifiedTypeInfo augmentedClassInfo = new JavaQualifiedTypeInfo();
+ JavaQualifiedTypeInfo augmentedImplInfo = new JavaQualifiedTypeInfo();
+ YangNode augmentedNode = ((YangJavaAugment) javaCodeGeneratorInfo).getAugmentedNode();
+ String name = null;
+ JavaFileInfo augmentedfileInfo = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo();
+ if (augmentedfileInfo.getJavaName() != null) {
+ name = getCapitalCase(augmentedfileInfo.getJavaName());
+ augmentedClassInfo.setClassInfo(name);
+ augmentedClassInfo.setPkgInfo(augmentedfileInfo.getPackage());
+ } else {
+ name = getCapitalCase(getCamelCase(augmentedNode.getName(), yangPlugin.getConflictResolver()));
+ augmentedClassInfo.setClassInfo(name);
+ augmentedClassInfo.setPkgInfo(getAugmentedNodesPackage(augmentedNode, yangPlugin));
+ }
+ augmentedBuilderInfo.setClassInfo(name + PERIOD + name + BUILDER);
+ augmentedBuilderInfo.setPkgInfo(augmentedClassInfo.getPkgInfo());
+ augmentedBuilderClassInfo.setClassInfo(getCapitalCase(DEFAULT) + name + PERIOD + name + BUILDER);
+ augmentedBuilderClassInfo.setPkgInfo(augmentedClassInfo.getPkgInfo());
+ augmentedImplInfo.setClassInfo(getCapitalCase(DEFAULT) + name);
+ augmentedImplInfo.setPkgInfo(augmentedBuilderInfo.getPkgInfo());
+ ((YangJavaAugment) javaCodeGeneratorInfo).addToExtendedClassInfo(augmentedBuilderInfo);
+ ((YangJavaAugment) javaCodeGeneratorInfo).addToExtendedClassInfo(augmentedImplInfo);
+ ((YangJavaAugment) javaCodeGeneratorInfo).addToExtendedClassInfo(augmentedBuilderClassInfo);
+ ((YangJavaAugment) javaCodeGeneratorInfo).addToExtendedClassInfo(augmentedClassInfo);
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
- .addToExtendsList(augmentationHoldersInfo, (YangNode) javaCodeGeneratorInfo);
-
- } else if (javaCodeGeneratorInfo instanceof YangAugment) {
- JavaQualifiedTypeInfo augmentedInfo = new JavaQualifiedTypeInfo();
- augmentedInfo.setClassInfo(AUGMENTED_INFO);
- augmentedInfo.setPkgInfo(PROVIDED_AUGMENTATION_CLASS_IMPORT_PKG);
+ .addToExtendsList(augmentedClassInfo, (YangNode) javaCodeGeneratorInfo);
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
- .addToExtendsList(augmentedInfo, (YangNode) javaCodeGeneratorInfo);
+ .addToExtendsList(augmentedBuilderInfo, (YangNode) javaCodeGeneratorInfo);
+ javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
+ .addToExtendsList(augmentedImplInfo, (YangNode) javaCodeGeneratorInfo);
+ javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
+ .addToExtendsList(augmentedBuilderClassInfo, (YangNode) javaCodeGeneratorInfo);
}
- */
+
if (javaCodeGeneratorInfo instanceof YangCase) {
YangNode parent = ((YangCase) javaCodeGeneratorInfo).getParent();
JavaQualifiedTypeInfo parentsInfo = new JavaQualifiedTypeInfo();
@@ -289,6 +322,45 @@
}
}
+ private static String getAugmentedNodesPackage(YangNode node, YangPluginConfig yangPluginConfig) {
+
+ List<String> clsInfo = new ArrayList<>();
+ node = node.getParent();
+ while (node != null) {
+ if (!(node instanceof YangJavaModule)
+ || !(node instanceof YangJavaSubModule)) {
+ if (node instanceof YangJavaAugment) {
+ clsInfo.add(((YangJavaAugment) node).getAugmentClassName());
+ } else {
+ clsInfo.add(getCamelCase(node.getName(), yangPluginConfig.getConflictResolver()));
+ }
+ }
+ if (node instanceof YangJavaModule
+ || node instanceof YangJavaSubModule) {
+ break;
+ }
+ node = node.getParent();
+ }
+
+ StringBuilder pkg = new StringBuilder();
+ if (node instanceof YangJavaModule) {
+ YangJavaModule module = (YangJavaModule) node;
+ pkg.append(getRootPackage(module.getVersion(), module.getNameSpace().getUri(), module
+ .getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
+ } else if (node instanceof YangJavaSubModule) {
+ YangJavaSubModule submodule = (YangJavaSubModule) node;
+ pkg.append(getRootPackage(submodule.getVersion(),
+ submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
+ submodule.getRevision().getRevDate(), yangPluginConfig.getConflictResolver()));
+ }
+ for (int i = 1; i <= clsInfo.size(); i++) {
+ pkg.append("." + clsInfo.get(clsInfo.size() - i));
+ }
+
+ return pkg.toString().toLowerCase();
+
+ }
+
/**
* Generates code for the current data model node.
*
@@ -297,7 +369,7 @@
* @throws IOException IO operations fails
*/
public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ YangPluginConfig yangPluginConfig)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
throw new TranslatorException("invalid node for translation");
@@ -370,4 +442,44 @@
pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
return pkg.toLowerCase();
}
+
+ /**
+ * Returns true if root node contains any data node.
+ *
+ * @param node root YANG node
+ * @return true if root node contains any data node
+ */
+ public static boolean isManagerCodeGenRequired(YangNode node) {
+ YangLeavesHolder holder = (YangLeavesHolder) node;
+
+ if (holder.getListOfLeaf() != null && !holder.getListOfLeaf().isEmpty()) {
+ return true;
+ } else if (holder.getListOfLeafList() != null && !holder.getListOfLeafList().isEmpty()) {
+ return true;
+ }
+ node = node.getChild();
+ return node != null && !(node instanceof YangTypeDef) && !(node instanceof YangGrouping);
+ }
+
+ /**
+ * Return false if files are already present.
+ *
+ * @param info java file info
+ * @return false if files already present
+ */
+ public static boolean isGenerationOfCodeReq(JavaFileInfo info) {
+ File codeGenDir = new File(info.getBaseCodeGenPath()
+ + info.getPackageFilePath());
+ File[] files = codeGenDir.listFiles();
+ if (files.length >= 1) {
+ for (File file : files) {
+ if (file.getName().contentEquals(getCapitalCase(info.getJavaName() + MANAGER + ".java"))
+ || file.getName().contentEquals(getCapitalCase(info.getJavaName() + SERVICE + ".java"))) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
index b53ec92..10cf879 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModule.java
@@ -33,8 +33,10 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
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.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isManagerCodeGenRequired;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isGenerationOfCodeReq;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
/**
@@ -60,7 +62,7 @@
/**
* List of notifications nodes.
*/
- private List<YangNode> notificationNodes;
+ private transient List<YangNode> notificationNodes;
/**
* Creates a YANG node of module type.
@@ -153,10 +155,15 @@
*
* The manager class needs to extend the "ListenerRegistry".
*/
+
try {
- getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
+ if (isManagerCodeGenRequired(this) && isGenerationOfCodeReq(getJavaFileInfo())) {
+ getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
+ }
searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
getJavaFileInfo().getPackageFilePath());
+ searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
+ getJavaFileInfo().getPackageFilePath());
} catch (IOException e) {
throw new TranslatorException("Failed to generate code for module node " + getName());
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
index 31abd5c..835d781 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModule.java
@@ -35,8 +35,10 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
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.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isManagerCodeGenRequired;
+import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isGenerationOfCodeReq;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
/**
@@ -62,7 +64,7 @@
/**
* List of notifications nodes.
*/
- private List<YangNode> notificationNodes = new ArrayList<>();
+ private transient List<YangNode> notificationNodes = new ArrayList<>();
/**
* Creates YANG java sub module object.
@@ -167,9 +169,13 @@
* The manager class needs to extend the "ListenerRegistry".
*/
try {
- getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
+ if (isManagerCodeGenRequired(this) && isGenerationOfCodeReq(getJavaFileInfo())) {
+ getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
+ }
searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
getJavaFileInfo().getPackageFilePath());
+ searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
+ getJavaFileInfo().getPackageFilePath());
} catch (IOException e) {
throw new TranslatorException("Failed to generate code for submodule node " + getName());
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index ab8134f..c439e0a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -16,13 +16,15 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangIdentity;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNotification;
import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaIdentity;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
@@ -36,9 +38,11 @@
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.utils.UtilConstants.ABSTRACT;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
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;
@@ -47,7 +51,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
import static org.onosproject.yangutils.utils.UtilConstants.FINAL;
-import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_REG;
@@ -61,7 +64,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.UtilConstants.SUBJECT;
-import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
@@ -91,12 +93,6 @@
* class / interface definition start.
*/
switch (genFileTypes) {
- case BUILDER_CLASS_MASK:
- return getBuilderClassDefinition(yangName);
- case IMPL_CLASS_MASK:
- return getImplClassDefinition(yangName);
- case BUILDER_INTERFACE_MASK:
- return getBuilderInterfaceDefinition(yangName);
case GENERATE_TYPEDEF_CLASS:
case GENERATE_UNION_CLASS:
return getTypeClassDefinition(yangName);
@@ -125,6 +121,12 @@
switch (genFileTypes) {
case INTERFACE_MASK:
return getInterfaceDefinition(yangName, curNode);
+ case BUILDER_CLASS_MASK:
+ return getBuilderClassDefinition(yangName, curNode);
+ case IMPL_CLASS_MASK:
+ return getImplClassDefinition(yangName, curNode);
+ case BUILDER_INTERFACE_MASK:
+ return getBuilderInterfaceDefinition(yangName, curNode);
case GENERATE_SERVICE_AND_MANAGER:
return getRpcInterfaceDefinition(yangName, curNode);
case GENERATE_EVENT_CLASS:
@@ -158,22 +160,10 @@
* @return definition
*/
private static String getInterfaceDefinition(String yangName, YangNode curNode) {
- JavaExtendsListHolder holder = ((TempJavaCodeFragmentFilesContainer) curNode)
- .getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder();
- if (holder.getExtendsList() != null && !holder.getExtendsList().isEmpty()) {
- String def = PUBLIC + SPACE + INTERFACE + SPACE + yangName + SPACE + EXTEND + SPACE;
- for (JavaQualifiedTypeInfo info : holder.getExtendsList()) {
- if (!holder.getExtendedClassStore().get(info)) {
- def = def + info.getClassInfo() + COMMA + SPACE;
- } else {
- def = def + info.getPkgInfo() + PERIOD + info.getClassInfo() + COMMA + SPACE;
- }
- }
-
- def = trimAtLast(def, COMMA);
-
- return def + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ String clsDef = getClassDefinitionForWhenExtended(curNode, yangName, INTERFACE_MASK);
+ if (clsDef != null) {
+ return clsDef;
}
return PUBLIC + SPACE + INTERFACE + SPACE + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
@@ -185,7 +175,14 @@
* is being generated
* @return definition
*/
- private static String getBuilderInterfaceDefinition(String yangName) {
+ private static String getBuilderInterfaceDefinition(String yangName, YangNode curNode) {
+ String clsDef = "";
+ if (curNode instanceof YangAugment) {
+ clsDef = getClassDefinitionForWhenExtended(curNode, yangName, BUILDER_INTERFACE_MASK);
+ if (clsDef != null) {
+ return clsDef;
+ }
+ }
return INTERFACE + SPACE + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + NEW_LINE;
}
@@ -195,7 +192,14 @@
* @param yangName file name
* @return definition
*/
- private static String getBuilderClassDefinition(String yangName) {
+ private static String getBuilderClassDefinition(String yangName, YangNode curNode) {
+ String clsDef = "";
+ if (curNode instanceof YangAugment) {
+ clsDef = getClassDefinitionForWhenExtended(curNode, yangName, BUILDER_CLASS_MASK);
+ if (clsDef != null) {
+ return clsDef;
+ }
+ }
return PUBLIC + SPACE + CLASS + SPACE + yangName + BUILDER + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
+ yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
@@ -206,8 +210,15 @@
* @param yangName file name
* @return definition
*/
- private static String getImplClassDefinition(String yangName) {
- return PUBLIC + SPACE + FINAL + SPACE + CLASS + SPACE + yangName + IMPL + SPACE + IMPLEMENTS + SPACE
+ private static String getImplClassDefinition(String yangName, YangNode curNode) {
+ String clsDef = "";
+ if (curNode instanceof YangAugment) {
+ clsDef = getClassDefinitionForWhenExtended(curNode, yangName, IMPL_CLASS_MASK);
+ if (clsDef != null) {
+ return clsDef;
+ }
+ }
+ return PUBLIC + SPACE + CLASS + SPACE + getCapitalCase(DEFAULT) + yangName + SPACE + IMPLEMENTS + SPACE
+ yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
@@ -228,19 +239,19 @@
* @return identity class definition
*/
private static String getIdentityClassDefinition(String yangName, YangNode curNode) {
- if (!(curNode instanceof YangJavaIdentity)) {
+ if (!(curNode instanceof YangIdentity)) {
throw new TranslatorException("Expected java identity instance node");
}
- YangJavaIdentity identity = (YangJavaIdentity) curNode;
+ YangIdentity identity = (YangIdentity) curNode;
if (identity.getBaseNode() != null) {
YangIdentity baseIdentity = identity.getBaseNode().getReferredIdentity();
- if (!(baseIdentity instanceof YangJavaIdentity)) {
+ if (!(baseIdentity instanceof YangIdentity)) {
throw new TranslatorException("Expected java identity instance node");
}
- YangJavaIdentity baseJavaIdentity = (YangJavaIdentity) baseIdentity;
+ JavaFileInfo fileInfo = ((JavaFileInfoContainer) baseIdentity).getJavaFileInfo();
return PUBLIC + SPACE + ABSTRACT + SPACE + CLASS + SPACE + yangName + SPACE + EXTEND + SPACE
- + getCapitalCase(baseJavaIdentity.getJavaFileInfo().getJavaName()) + SPACE +
+ + getCapitalCase(fileInfo.getJavaName()) + SPACE +
OPEN_CURLY_BRACKET + NEW_LINE;
}
@@ -332,4 +343,99 @@
return intfDef;
}
+
+ /**
+ * Returns class definition when class is extending another class.
+ *
+ * @param curNode current node
+ * @param yangName name
+ * @param genFileTypes gen file type
+ * @return class definition
+ */
+ private static String getClassDefinitionForWhenExtended(YangNode curNode, String yangName, int genFileTypes) {
+ JavaExtendsListHolder holder = ((TempJavaCodeFragmentFilesContainer) curNode)
+ .getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder();
+
+ if (holder.getExtendsList() != null && !holder.getExtendsList().isEmpty()) {
+ String def = PUBLIC + SPACE;
+ switch (genFileTypes) {
+ case INTERFACE_MASK:
+ def = def + INTERFACE + SPACE + yangName + SPACE + EXTEND + SPACE;
+ for (JavaQualifiedTypeInfo info : holder.getExtendsList()) {
+ if (curNode instanceof YangAugment) {
+ if (!info.getClassInfo().contains(BUILDER) && !info.getClassInfo().contains(
+ getCapitalCase(DEFAULT))) {
+ def = getDefinitionString(def, info, holder);
+ }
+ } else {
+ def = getDefinitionString(def, info, holder);
+ }
+ }
+ def = trimAtLast(def, COMMA);
+
+ return def + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ case BUILDER_INTERFACE_MASK:
+ String builderDef = INTERFACE + SPACE + yangName + BUILDER + SPACE + EXTEND + SPACE;
+ for (JavaQualifiedTypeInfo info : holder.getExtendsList()) {
+ if (info.getClassInfo().contains(BUILDER) && !info.getClassInfo().contains(
+ getCapitalCase(DEFAULT))) {
+ builderDef = getDefinitionString(builderDef, info, holder);
+ }
+ }
+
+ builderDef = trimAtLast(builderDef, COMMA);
+
+ return builderDef + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ case BUILDER_CLASS_MASK:
+ def = def + CLASS + SPACE + yangName + BUILDER + SPACE + EXTEND + SPACE;
+ for (JavaQualifiedTypeInfo info : holder.getExtendsList()) {
+ if (info.getClassInfo().contains(BUILDER)
+ && info.getClassInfo().contains(getCapitalCase(DEFAULT))) {
+ def = getDefinitionString(def, info, holder);
+ }
+ }
+
+ def = trimAtLast(def, COMMA);
+
+ return def + SPACE + IMPLEMENTS + SPACE + yangName + PERIOD
+ + yangName + BUILDER + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+
+ case IMPL_CLASS_MASK:
+ def = def + SPACE + CLASS + SPACE + getCapitalCase(DEFAULT) + yangName + SPACE + EXTEND + SPACE;
+ for (JavaQualifiedTypeInfo info : holder.getExtendsList()) {
+ if (!info.getClassInfo().contains(BUILDER)
+ && info.getClassInfo().contains(getCapitalCase(DEFAULT))) {
+ def = getDefinitionString(def, info, holder);
+ }
+ }
+
+ def = trimAtLast(def, COMMA);
+
+ return def + SPACE + IMPLEMENTS + SPACE
+ + yangName + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+
+ default:
+ return null;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns updated class definition.
+ *
+ * @param def current definition
+ * @param info java qualified info
+ * @param holder extend list holder
+ * @return updated class definition
+ */
+ private static String getDefinitionString(String def, JavaQualifiedTypeInfo info, JavaExtendsListHolder holder) {
+ if (!holder.getExtendedClassStore().get(info)) {
+ def = def + info.getClassInfo() + COMMA + SPACE;
+ } else {
+ def = def + info.getPkgInfo() + PERIOD + info.getClassInfo() + COMMA + SPACE;
+ }
+ return def;
+ }
+
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 3e523b0..d29fb86 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -16,31 +16,51 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import java.util.List;
+
+import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
+import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
-import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
+import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION_IMPORT;
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.COMMA;
+import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION_IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION_IMPORT;
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.ENUM;
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.IMMEDIATE;
import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.INT;
import static org.onosproject.yangutils.utils.UtilConstants.LIST;
-import static org.onosproject.yangutils.utils.UtilConstants.NEW;
+import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
+import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_FACTORY_IMPORT;
+import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_IMPORT;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
+import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION_IMPORT;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
+import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
+import static java.util.Collections.sort;
/**
* Represents utility class to generate the java snippet.
@@ -71,7 +91,7 @@
*
* @param importInfo import info
* @return the textual java code information corresponding to the import
- * list
+ * list
*/
public static String getImportText(JavaQualifiedTypeInfo importInfo) {
return IMPORT + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
@@ -81,13 +101,13 @@
* Returns the textual java code for attribute definition in class.
*
* @param javaAttributeTypePkg Package of the attribute type
- * @param javaAttributeType java attribute type
- * @param javaAttributeName name of the attribute
- * @param isList is list attribute
+ * @param javaAttributeType java attribute type
+ * @param javaAttributeName name of the attribute
+ * @param isList is list attribute
* @return the textual java code for attribute definition in class
*/
public static String getJavaAttributeDefination(String javaAttributeTypePkg, String javaAttributeType,
- String javaAttributeName, boolean isList) {
+ String javaAttributeName, boolean isList) {
String attributeDefination = PRIVATE + SPACE;
@@ -121,17 +141,6 @@
}
/**
- * Returns attribute of augmented info for generated impl file.
- *
- * @return attribute of augmented info for generated impl file
- */
- public static String getAugmentedInfoAttribute() {
- return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + getListAttribute(AUGMENTED_INFO) + SPACE
- + getSmallCase(AUGMENTED_INFO) + LIST + SPACE + EQUAL + SPACE + NEW + SPACE + ARRAY_LIST
- + DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
- }
-
- /**
* Returns based on the file type and the YANG name of the file, generate the class
* / interface definition close.
*
@@ -144,8 +153,8 @@
/**
* Returns string for enum's attribute.
*
- * @param name name of attribute
- * @param value value of the enum
+ * @param name name of attribute
+ * @param value value of the enum
* @param pluginConfig plugin configurations
* @return string for enum's attribute
*/
@@ -155,4 +164,128 @@
+ value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
}
+ /**
+ * Adds annotations imports.
+ *
+ * @param imports list if imports
+ * @param operation to add or to delete
+ */
+ public static void addAnnotationsImports(List<String> imports, boolean operation) {
+ if (operation) {
+ imports.add(ACTIVATE_ANNOTATION_IMPORT);
+ imports.add(DEACTIVATE_ANNOTATION_IMPORT);
+ imports.add(COMPONENT_ANNOTATION_IMPORT);
+ imports.add(SERVICE_ANNOTATION_IMPORT);
+ imports.add(LOGGER_FACTORY_IMPORT);
+ imports.add(LOGGER_IMPORT);
+ } else {
+ imports.remove(ACTIVATE_ANNOTATION_IMPORT);
+ imports.remove(DEACTIVATE_ANNOTATION_IMPORT);
+ imports.remove(COMPONENT_ANNOTATION_IMPORT);
+ imports.remove(SERVICE_ANNOTATION_IMPORT);
+ imports.remove(LOGGER_FACTORY_IMPORT);
+ imports.remove(LOGGER_IMPORT);
+ }
+ sortImports(imports);
+ }
+
+ /**
+ * Returns sorted import list.
+ *
+ * @param imports import list
+ * @return sorted import list
+ */
+ public static List<String> sortImports(List<String> imports) {
+ sort(imports);
+ return imports;
+ }
+
+ /**
+ * Returns event enum start.
+ *
+ * @return event enum start
+ */
+ public static String getEventEnumTypeStart() {
+ return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE + SPACE + OPEN_CURLY_BRACKET
+ + NEW_LINE;
+ }
+
+ /**
+ * Adds listener's imports.
+ *
+ * @param curNode currentYangNode.
+ * @param imports import list
+ * @param operation add or remove
+ * @param classInfo class info to be added to import list
+ */
+ public static void addListenersImport(YangNode curNode, List<String> imports, boolean operation,
+ String classInfo) {
+ String thisImport = "";
+ if (classInfo.equals(LISTENER_SERVICE)) {
+ thisImport = getTempJavaFragment(curNode).getJavaImportData().getListenerServiceImport();
+ performOperationOnImports(imports, thisImport, operation);
+ } else {
+ thisImport = getTempJavaFragment(curNode).getJavaImportData().getListenerRegistryImport();
+ performOperationOnImports(imports, thisImport, operation);
+ }
+ }
+
+ /**
+ * Performs given operations on import list.
+ *
+ * @param imports list of imports
+ * @param curImport current import
+ * @param operation add or remove
+ * @return import list
+ */
+ private static List<String> performOperationOnImports(List<String> imports, String curImport,
+ boolean operation) {
+ if (operation) {
+ imports.add(curImport);
+ } else {
+ imports.remove(curImport);
+ }
+ sortImports(imports);
+ return imports;
+ }
+
+ /**
+ * Returns temp java fragment.
+ *
+ * @param curNode current YANG node
+ * @return temp java fragments
+ */
+ public static TempJavaFragmentFiles getTempJavaFragment(YangNode curNode) {
+ TempJavaCodeFragmentFiles container = ((TempJavaCodeFragmentFilesContainer) curNode)
+ .getTempJavaCodeFragmentFiles();
+ if (container.getBeanTempFiles() != null) {
+ return container.getBeanTempFiles();
+ }
+ if (container.getServiceTempFiles() != null) {
+ return container.getServiceTempFiles();
+ }
+
+ return null;
+ }
+
+ /**
+ * Returns integer attribute for enum's class to get the values.
+ *
+ * @param className enum's class name
+ * @return enum's attribute
+ */
+ public static String getEnumsValueAttribute(String className) {
+ return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className)
+ + SEMI_COLAN + NEW_LINE;
+ }
+
+ /**
+ * Returns component string.
+ *
+ * @return component string
+ */
+ public static String addComponentString() {
+ return NEW_LINE + COMPONENT_ANNOTATION + SPACE + OPEN_PARENTHESIS + IMMEDIATE + SPACE
+ + EQUAL + SPACE + TRUE + CLOSE_PARENTHESIS + NEW_LINE + SERVICE_ANNOTATION;
+ }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
index efe3833..ca1f052 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaExtendsListHolder.java
@@ -28,7 +28,7 @@
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.getTempJavaFragement;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getTempJavaFragment;
/**
* Represent the extends list for generated java classes. It holds the class details which needs
@@ -62,7 +62,7 @@
* @param extendedClass map of classes need to be extended
*/
private void setExtendedClassStore(Map<JavaQualifiedTypeInfo, Boolean> extendedClass) {
- this.extendedClassStore = extendedClass;
+ extendedClassStore = extendedClass;
}
/**
@@ -74,7 +74,7 @@
public void addToExtendsList(JavaQualifiedTypeInfo info, YangNode node) {
JavaFileInfo fileInfo = ((JavaFileInfoContainer) node).getJavaFileInfo();
- JavaImportData importData = getTempJavaFragement(node).getJavaImportData();
+ JavaImportData importData = getTempJavaFragment(node).getJavaImportData();
boolean qualified = importData.addImportInfo(info,
getCapitalCase(fileInfo.getJavaName()), fileInfo.getPackage());
@@ -99,7 +99,7 @@
* @param classInfoList the extends List to set
*/
private void setExtendsList(List<JavaQualifiedTypeInfo> classInfoList) {
- this.extendsList = classInfoList;
+ extendsList = classInfoList;
}
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 25b9c85..49315f3 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -21,14 +21,14 @@
import java.util.ArrayList;
import java.util.List;
+import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
@@ -43,6 +43,7 @@
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.AUGMENTE_CLASS_CONSTRUCTOR_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;
@@ -62,17 +63,14 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getAugmentedInfoAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getEnumsValueAttribute;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.addActivateMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.addDeActivateMethod;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentInfoListImpl;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentedNodesConstructorStart;
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.getEnumsConstructor;
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;
@@ -82,31 +80,36 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodClose;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getHashCodeMethodOpen;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOmitNullValueString;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRemoveAugmentationImpl;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodOpen;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.getEventEnumTypeStart;
-import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.isAugmentationHolderExtended;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
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.COMMA;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
+import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX;
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.LOGGER_STATEMENT;
import static org.onosproject.yangutils.utils.UtilConstants.MANAGER;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_METHOD_STRING;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.UtilConstants.SUPER;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
@@ -122,18 +125,19 @@
/**
* Returns generated interface file for current node.
*
- * @param file file
- * @param imports imports for the file
- * @param curNode current YANG node
+ * @param file file
+ * @param imports imports for the file
+ * @param curNode current YANG node
* @param isAttrPresent if any attribute is present or not
* @return interface file
* @throws IOException when fails to write in file
*/
public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode,
- boolean isAttrPresent)
+ boolean isAttrPresent)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
String className = getCapitalCase(javaFileInfo.getJavaName());
@@ -149,7 +153,7 @@
*/
insertDataIntoJavaFile(file, getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while interface file generation");
@@ -161,8 +165,8 @@
/**
* Returns generated builder interface file for current node.
*
- * @param file file
- * @param curNode current YANG node
+ * @param file file
+ * @param curNode current YANG node
* @param isAttrPresent if any attribute is present or not
* @return builder interface file
* @throws IOException when fails to write in file
@@ -176,7 +180,7 @@
String className = getCapitalCase(javaFileInfo.getJavaName());
String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
- initiateJavaFileGeneration(file, className, BUILDER_INTERFACE_MASK, null, path, pluginConfig);
+ initiateJavaFileGeneration(file, BUILDER_INTERFACE_MASK, null, curNode, className);
List<String> methods = new ArrayList<>();
if (isAttrPresent) {
try {
@@ -185,14 +189,14 @@
*/
methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
/**
* Setter methods.
*/
methods.add(NEW_LINE);
methods.add(FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while builder interface file generation");
@@ -219,16 +223,14 @@
/**
* Returns generated builder class file for current node.
*
- * @param file file
- * @param imports imports for the file
- * @param curNode current YANG node
+ * @param file file
+ * @param curNode current YANG node
* @param isAttrPresent if any attribute is present or not
* @return builder class file
* @throws IOException when fails to write in file
*/
- public static File generateBuilderClassFile(File file, List<String> imports, YangNode curNode,
- boolean isAttrPresent)
- throws IOException {
+ public static File generateBuilderClassFile(File file, YangNode curNode,
+ boolean isAttrPresent) throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig();
@@ -236,9 +238,12 @@
String className = getCapitalCase(javaFileInfo.getJavaName());
String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
- initiateJavaFileGeneration(file, className, BUILDER_CLASS_MASK, imports, path, pluginConfig);
-
+ initiateJavaFileGeneration(file, BUILDER_CLASS_MASK, null, curNode, className);
List<String> methods = new ArrayList<>();
+ boolean isAugmentNode = false;
+ if (curNode instanceof YangAugment) {
+ isAugmentNode = true;
+ }
if (isAttrPresent) {
/**
@@ -248,7 +253,7 @@
insertDataIntoJavaFile(file,
NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while builder class file generation");
@@ -260,14 +265,30 @@
*/
methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
/**
* Setter methods.
*/
methods.add(getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()) +
- NEW_LINE);
+ .getBeanTempFiles(), path));
+
+ if (isAugmentNode) {
+ YangAugment augment = (YangAugment) curNode;
+ String augmentNode = getCapitalCase(
+ getCamelCase(augment.getAugmentedNode().getName(), pluginConfig.getConflictResolver()));
+ /**
+ * Constructor.
+ */
+ String constructor = getAugmentedNodesConstructorStart(className, augmentNode)
+ + getDataFromTempFileHandle(AUGMENTE_CLASS_CONSTRUCTOR_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getBeanTempFiles(), path);
+
+ methods.add(constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
+ NEW_LINE + NEW_LINE);
+ }
+ insertDataIntoJavaFile(file, NEW_LINE);
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while builder class file generation");
@@ -289,26 +310,28 @@
for (String method : methods) {
insertDataIntoJavaFile(file, method);
}
+ insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET);
return validateLineLength(file);
}
/**
* Returns generated manager class file for current node.
*
- * @param file file
- * @param imports imports for the file
- * @param curNode current YANG node
+ * @param file file
+ * @param imports imports for the file
+ * @param curNode current YANG node
* @param isAttrPresent if any attribute is present or not
* @return builder class file
* @throws IOException when fails to write in file
*/
public static File generateManagerClassFile(File file, List<String> imports, YangNode curNode,
- boolean isAttrPresent)
+ boolean isAttrPresent)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
String className = getCapitalCase(javaFileInfo.getJavaName()) + MANAGER;
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
initiateJavaFileGeneration(file, GENERATE_SERVICE_AND_MANAGER, imports, curNode, className);
@@ -326,14 +349,14 @@
methods.add(
getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
((TempJavaCodeFragmentFilesContainer) curNode)
- .getTempJavaCodeFragmentFiles().getServiceTempFiles()));
+ .getTempJavaCodeFragmentFiles().getServiceTempFiles(), path));
/**
* Setter methods.
*/
methods.add(
getDataFromTempFileHandle(SETTER_FOR_CLASS_MASK,
((TempJavaCodeFragmentFilesContainer) curNode)
- .getTempJavaCodeFragmentFiles().getServiceTempFiles())
+ .getTempJavaCodeFragmentFiles().getServiceTempFiles(), path)
+ NEW_LINE);
}
@@ -343,7 +366,7 @@
* Rpc methods
*/
methods.add(getDataFromTempFileHandle(RPC_IMPL_MASK,
- javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles()));
+ javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles(), path));
}
insertDataIntoJavaFile(file, NEW_LINE);
@@ -364,13 +387,14 @@
/**
* Returns generated impl class file for current node.
*
- * @param file file
- * @param curNode current YANG node
+ * @param file file
+ * @param curNode current YANG node
* @param isAttrPresent if any attribute is present or not
+ * @param imports list of imports
* @return impl class file
* @throws IOException when fails to write in file
*/
- public static File generateImplClassFile(File file, YangNode curNode, boolean isAttrPresent)
+ public static File generateImplClassFile(File file, YangNode curNode, boolean isAttrPresent, List<String> imports)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -379,20 +403,14 @@
String className = getCapitalCase(javaFileInfo.getJavaName());
String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
- initiateJavaFileGeneration(file, className, IMPL_CLASS_MASK, null, path, pluginConfig);
+ initiateJavaFileGeneration(file, IMPL_CLASS_MASK, imports, curNode, className);
List<String> methods = new ArrayList<>();
-
- TempJavaCodeFragmentFiles javaCodeFragmentFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
- .getTempJavaCodeFragmentFiles();
- boolean isAugmentationHolderExtended = isAugmentationHolderExtended(
- javaCodeFragmentFiles.getBeanTempFiles().getJavaExtendsListHolder().getExtendsList());
- /**
- * Add attribute for augmented info's list.
- */
- if (isAugmentationHolderExtended) {
- insertDataIntoJavaFile(file, getAugmentedInfoAttribute());
+ boolean isAugmentNode = false;
+ if (curNode instanceof YangAugment) {
+ isAugmentNode = true;
}
+
if (isAttrPresent) {
/**
* Add attribute strings.
@@ -401,20 +419,19 @@
insertDataIntoJavaFile(file,
NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while impl class file generation");
}
- insertDataIntoJavaFile(file, NEW_LINE);
try {
/**
* Getter methods.
*/
methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()));
+ .getBeanTempFiles(), path));
/**
* Hash code method.
@@ -422,20 +439,20 @@
methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
getDataFromTempFileHandle(HASH_CODE_IMPL_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles()).replace(NEW_LINE, EMPTY_STRING)));
+ .getBeanTempFiles(), path).replace(NEW_LINE, EMPTY_STRING)));
/**
* Equals method.
*/
- methods.add(getEqualsMethodClose(
- getEqualsMethodOpen(className + IMPL) + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles())));
+ methods.add(getEqualsMethodClose(getEqualsMethodOpen(getCapitalCase(DEFAULT) + className)
+ + getDataFromTempFileHandle(EQUALS_IMPL_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getBeanTempFiles(), path)));
/**
* To string method.
*/
methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles())
+ .getBeanTempFiles(), path)
+ getToStringMethodClose());
} catch (IOException e) {
@@ -450,10 +467,15 @@
/**
* Constructor.
*/
- String constructor =
- getConstructorStart(className, pluginConfig) + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getBeanTempFiles());
+ String constructor = getConstructorStart(className, pluginConfig);
+ if (isAugmentNode) {
+ constructor = constructor + EIGHT_SPACE_INDENTATION + SUPER + OPEN_PARENTHESIS
+ + BUILDER.toLowerCase() + OBJECT
+ + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+ }
+ constructor = constructor + getDataFromTempFileHandle(CONSTRUCTOR_IMPL_MASK,
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getBeanTempFiles(), path);
methods.add(constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET);
} catch (IOException e) {
@@ -462,21 +484,11 @@
}
/**
- * Add method for augment info's list.
- */
- if (isAugmentationHolderExtended) {
- methods.add(getAddAugmentInfoMethodImpl());
- methods.add(getAugmentInfoListImpl());
- methods.add(getRemoveAugmentationImpl());
- }
-
- /**
* Add methods in impl class.
*/
for (String method : methods) {
- insertDataIntoJavaFile(file, FOUR_SPACE_INDENTATION + method + NEW_LINE);
+ insertDataIntoJavaFile(file, method);
}
- insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
return validateLineLength(file);
}
@@ -484,7 +496,7 @@
/**
* Generates class file for type def.
*
- * @param file generated file
+ * @param file generated file
* @param curNode current YANG node
* @param imports imports for file
* @return type def class file
@@ -510,7 +522,7 @@
insertDataIntoJavaFile(file,
NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getTypeTempFiles()));
+ .getTypeTempFiles(), path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while type def class file generation");
@@ -528,19 +540,22 @@
* Type constructor.
*/
methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles()));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path));
/**
* Of method.
*/
methods.add(getDataFromTempFileHandle(OF_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles()));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path));
/**
* Getter method.
*/
methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles()));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path));
/**
* Hash code method.
@@ -548,22 +563,23 @@
methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
getDataFromTempFileHandle(HASH_CODE_IMPL_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getTypeTempFiles())
- .replace(NEW_LINE, EMPTY_STRING)));
+ .getTypeTempFiles(), path)
+ .replace(NEW_LINE, EMPTY_STRING)));
/**
* Equals method.
*/
methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
+ getDataFromTempFileHandle(EQUALS_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles())));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getTypeTempFiles(), path)));
/**
* To string method.
*/
methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles())
- + getToStringMethodClose());
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path) + getToStringMethodClose());
JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
/**
@@ -571,7 +587,8 @@
*/
methods.add(getFromStringMethodSignature(className, pluginConfig)
+ getDataFromTempFileHandle(FROM_STRING_IMPL_MASK, javaGeninfo.getTempJavaCodeFragmentFiles()
- .getTypeTempFiles()) + getFromStringMethodClose());
+ .getTypeTempFiles(), path)
+ + getFromStringMethodClose());
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
@@ -589,7 +606,7 @@
/**
* Generates class file for union type.
*
- * @param file generated file
+ * @param file generated file
* @param curNode current YANG node
* @param imports imports for file
* @return type def class file
@@ -615,7 +632,7 @@
insertDataIntoJavaFile(file,
NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getTypeTempFiles()));
+ .getTypeTempFiles(), path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
+ " while union class file generation");
@@ -633,19 +650,22 @@
* Type constructor.
*/
methods.add(getDataFromTempFileHandle(CONSTRUCTOR_FOR_TYPE_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles()));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path));
/**
* Of string method.
*/
methods.add(getDataFromTempFileHandle(OF_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles()));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path));
/**
* Getter method.
*/
methods.add(getDataFromTempFileHandle(GETTER_FOR_CLASS_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles()));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(),
+ path));
/**
* Hash code method.
@@ -653,15 +673,16 @@
methods.add(getHashCodeMethodClose(getHashCodeMethodOpen() +
getDataFromTempFileHandle(HASH_CODE_IMPL_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getTypeTempFiles())
- .replace(NEW_LINE, EMPTY_STRING)));
+ .getTypeTempFiles(), path)
+ .replace(NEW_LINE, EMPTY_STRING)));
/**
* Equals method.
*/
methods.add(getEqualsMethodClose(getEqualsMethodOpen(className + EMPTY_STRING)
+ getDataFromTempFileHandle(EQUALS_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles())));
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getTypeTempFiles(), path)));
/**
* To string method.
@@ -669,14 +690,16 @@
methods.add(getToStringMethodOpen() + getOmitNullValueString() +
getDataFromTempFileHandle(TO_STRING_IMPL_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getTypeTempFiles()) + getToStringMethodClose());
+ .getTypeTempFiles(), path)
+ + getToStringMethodClose());
/**
* From string method.
*/
methods.add(getFromStringMethodSignature(className, pluginConfig)
+ getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles())
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getTypeTempFiles(), path)
+ getFromStringMethodClose());
} catch (IOException e) {
@@ -695,7 +718,7 @@
/**
* Generates class file for type enum.
*
- * @param file generated file
+ * @param file generated file
* @param curNode current YANG node
* @return class file for type enum
* @throws IOException when fails to generate class file
@@ -717,7 +740,7 @@
JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
insertDataIntoJavaFile(file,
trimAtLast(trimAtLast(getDataFromTempFileHandle(ENUM_IMPL_MASK, javaGeninfo
- .getTempJavaCodeFragmentFiles().getEnumerationTempFiles()), COMMA), NEW_LINE)
+ .getTempJavaCodeFragmentFiles().getEnumerationTempFiles(), path), COMMA), NEW_LINE)
+ SEMI_COLAN + NEW_LINE);
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + getCapitalCase(className)
@@ -734,11 +757,11 @@
* Add a constructor for enum.
*/
insertDataIntoJavaFile(file, getJavaDoc(TYPE_CONSTRUCTOR, className, false, pluginConfig)
- + getEnumsConstrcutor(getCapitalCase(className)) + NEW_LINE);
+ + getEnumsConstructor(getCapitalCase(className)) + NEW_LINE);
- TempJavaEnumerationFragmentFiles enumFragFiles =
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getEnumerationTempFiles();
+ TempJavaEnumerationFragmentFiles enumFragFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
+ .getTempJavaCodeFragmentFiles()
+ .getEnumerationTempFiles();
insertDataIntoJavaFile(file, getEnumsOfMethod(className,
enumFragFiles.getJavaAttributeForEnum(pluginConfig),
enumFragFiles.getEnumSetJavaMap(),
@@ -754,8 +777,8 @@
try {
insertDataIntoJavaFile(file, getFromStringMethodSignature(getCapitalCase(className), pluginConfig)
+ getDataFromTempFileHandle(FROM_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getEnumerationTempFiles())
+ ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
+ .getEnumerationTempFiles(), path)
+ getFromStringMethodClose());
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " +
@@ -770,20 +793,21 @@
/**
* Generates interface file for rpc.
*
- * @param file generated file
- * @param curNode current YANG node
- * @param imports imports for file
+ * @param file generated file
+ * @param curNode current YANG node
+ * @param imports imports for file
* @param isAttributePresent is attribute present
* @return rpc class file
* @throws IOException when fails to generate class file
*/
public static File generateServiceInterfaceFile(File file, YangNode curNode, List<String> imports,
- boolean isAttributePresent)
+ boolean isAttributePresent)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
String className = getCapitalCase(javaFileInfo.getJavaName()) + SERVICE_METHOD_STRING;
+ String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
initiateJavaFileGeneration(file, GENERATE_SERVICE_AND_MANAGER, imports, curNode, className);
List<String> methods = new ArrayList<>();
@@ -796,13 +820,13 @@
*/
methods.add(getDataFromTempFileHandle(GETTER_FOR_INTERFACE_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getServiceTempFiles()));
+ .getServiceTempFiles(), path));
/**
* Setter methods.
*/
methods.add(getDataFromTempFileHandle(SETTER_FOR_INTERFACE_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
- .getServiceTempFiles()));
+ .getServiceTempFiles(), path));
}
if (((JavaCodeGeneratorInfo) curNode).getTempJavaCodeFragmentFiles().getServiceTempFiles() != null) {
JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode;
@@ -810,7 +834,7 @@
* Rpc methods
*/
methods.add(getDataFromTempFileHandle(RPC_INTERFACE_MASK,
- javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles()));
+ javaGeninfo.getTempJavaCodeFragmentFiles().getServiceTempFiles(), path));
}
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
@@ -828,27 +852,28 @@
/**
* Generates event file.
*
- * @param file generated file
+ * @param file generated file
* @param curNode current YANG node
* @param imports imports for file
* @throws IOException when fails to generate class file
*/
public static void generateEventFile(File file, YangNode curNode, List<String> imports) throws IOException {
- String className =
- getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
- + EVENT_STRING;
+ String className = getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
+ + EVENT_STRING;
TempJavaServiceFragmentFiles tempFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles().getServiceTempFiles();
+ String path = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getBaseCodeGenPath()
+ + ((JavaFileInfoContainer) curNode).getJavaFileInfo().getPackageFilePath();
initiateJavaFileGeneration(file, GENERATE_EVENT_CLASS, imports, curNode, className);
try {
insertDataIntoJavaFile(file, NEW_LINE + getEventEnumTypeStart() +
- trimAtLast(getDataFromTempFileHandle(EVENT_ENUM_MASK, tempFiles), COMMA)
+ trimAtLast(getDataFromTempFileHandle(EVENT_ENUM_MASK, tempFiles, path), COMMA)
+ FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE);
- insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_METHOD_MASK, tempFiles));
+ insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_METHOD_MASK, tempFiles, path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
@@ -862,7 +887,7 @@
/**
* Generates event listener file.
*
- * @param file generated file
+ * @param file generated file
* @param curNode current YANG node
* @param imports imports for file
* @throws IOException when fails to generate class file
@@ -870,9 +895,8 @@
public static void generateEventListenerFile(File file, YangNode curNode, List<String> imports)
throws IOException {
- String className =
- getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
- + EVENT_LISTENER_STRING;
+ String className = getCapitalCase(((JavaFileInfoContainer) curNode).getJavaFileInfo().getJavaName())
+ + EVENT_LISTENER_STRING;
initiateJavaFileGeneration(file, GENERATE_EVENT_LISTENER_INTERFACE, imports, curNode, className);
insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
@@ -882,7 +906,7 @@
/**
* Generates event subject's file.
*
- * @param file file handle
+ * @param file file handle
* @param curNode current YANG node
* @throws IOException when fails to do IO exceptions
*/
@@ -894,16 +918,18 @@
initiateJavaFileGeneration(file, GENERATE_EVENT_SUBJECT_CLASS, null, curNode, className);
+ String path = ((JavaFileInfoContainer) curNode).getJavaFileInfo().getBaseCodeGenPath()
+ + ((JavaFileInfoContainer) curNode).getJavaFileInfo().getPackageFilePath();
TempJavaServiceFragmentFiles tempFiles = ((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles().getServiceTempFiles();
insertDataIntoJavaFile(file, NEW_LINE);
try {
- insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_ATTRIBUTE_MASK, tempFiles));
+ insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_ATTRIBUTE_MASK, tempFiles, path));
- insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_GETTER_MASK, tempFiles));
+ insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_GETTER_MASK, tempFiles, path));
- insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_SETTER_MASK, tempFiles));
+ insertDataIntoJavaFile(file, getDataFromTempFileHandle(EVENT_SUBJECT_SETTER_MASK, tempFiles, path));
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 4a2b6f5..c6fd897 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.util.List;
+import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
@@ -39,13 +40,14 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_IDENTITY_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_IDENTITY_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.AUGMENTE_CLASS_CONSTRUCTOR_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;
@@ -66,26 +68,16 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
-import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
-import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.IMMEDIATE;
-import static org.onosproject.yangutils.utils.UtilConstants.INT;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
-import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
-import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
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;
@@ -97,6 +89,9 @@
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_MANAGER;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getJavaPackageFromPackagePath;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.parsePkg;
@@ -130,11 +125,12 @@
*
* @param generatedTempFiles temporary file types
* @param tempJavaFragmentFiles temp java fragment files
+ * @param absolutePath absolute path
* @return data stored in temporary files
* @throws IOException when failed to get the data from temporary file handle
*/
public static String getDataFromTempFileHandle(int generatedTempFiles,
- TempJavaFragmentFiles tempJavaFragmentFiles)
+ TempJavaFragmentFiles tempJavaFragmentFiles, String absolutePath)
throws IOException {
TempJavaTypeFragmentFiles typeFragmentFiles = null;
@@ -156,49 +152,64 @@
if ((generatedTempFiles & ATTRIBUTES_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAttributesTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & GETTER_FOR_INTERFACE_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterInterfaceTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & SETTER_FOR_INTERFACE_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterInterfaceTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterInterfaceTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & GETTER_FOR_CLASS_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getGetterImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & SETTER_FOR_CLASS_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getSetterImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & CONSTRUCTOR_IMPL_MASK) != 0) {
if (beanFragmentFiles == null) {
throw new TranslatorException("Required constructor info is missing.");
}
return beanFragmentFiles
- .getTemporaryDataFromFileHandle(beanFragmentFiles.getConstructorImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(beanFragmentFiles.getConstructorImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & HASH_CODE_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getHashCodeImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getHashCodeImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & EQUALS_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getEqualsImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getEqualsImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & TO_STRING_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getToStringImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getToStringImplTempFileHandle(),
+ absolutePath);
+ } else if ((generatedTempFiles & AUGMENTE_CLASS_CONSTRUCTOR_MASK) != 0) {
+ return tempJavaFragmentFiles
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getAugmentConstructorImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & OF_STRING_IMPL_MASK) != 0) {
if (typeFragmentFiles == null) {
throw new TranslatorException("Required of string implementation info is missing.");
}
return typeFragmentFiles
- .getTemporaryDataFromFileHandle(typeFragmentFiles.getOfStringImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(typeFragmentFiles.getOfStringImplTempFileHandle(), absolutePath);
} else if ((generatedTempFiles & CONSTRUCTOR_FOR_TYPE_MASK) != 0) {
if (typeFragmentFiles == null) {
throw new TranslatorException("Required constructor implementation info is missing.");
}
return typeFragmentFiles
- .getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle());
+ .getTemporaryDataFromFileHandle(typeFragmentFiles.getConstructorForTypeTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & FROM_STRING_IMPL_MASK) != 0) {
return tempJavaFragmentFiles
- .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(tempJavaFragmentFiles.getFromStringImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & ENUM_IMPL_MASK) != 0) {
if (!(tempJavaFragmentFiles instanceof TempJavaEnumerationFragmentFiles)) {
throw new TranslatorException("Required enum info is missing.");
@@ -206,49 +217,56 @@
TempJavaEnumerationFragmentFiles enumFragmentFiles =
(TempJavaEnumerationFragmentFiles) tempJavaFragmentFiles;
return enumFragmentFiles
- .getTemporaryDataFromFileHandle(enumFragmentFiles.getEnumClassTempFileHandle());
+ .getTemporaryDataFromFileHandle(enumFragmentFiles.getEnumClassTempFileHandle(), absolutePath);
} else if ((generatedTempFiles & RPC_INTERFACE_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc interface info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcInterfaceTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcInterfaceTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & RPC_IMPL_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc implementation info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcImplTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getRpcImplTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & EVENT_ENUM_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc implementation info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventEnumTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventEnumTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & EVENT_METHOD_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc implementation info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventMethodTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventMethodTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & EVENT_SUBJECT_GETTER_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc implementation info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectGetterTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectGetterTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & EVENT_SUBJECT_SETTER_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc implementation info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectSetterTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectSetterTempFileHandle(),
+ absolutePath);
} else if ((generatedTempFiles & EVENT_SUBJECT_ATTRIBUTE_MASK) != 0) {
if (serviceFragmentFiles == null) {
throw new TranslatorException("Required rpc implementation info is missing.");
}
return serviceFragmentFiles
- .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectAttributeTempFileHandle());
+ .getTemporaryDataFromFileHandle(serviceFragmentFiles.getEventSubjectAttributeTempFileHandle(),
+ absolutePath);
}
return null;
}
@@ -265,7 +283,7 @@
* @throws IOException when fails to generate a file
*/
public static void initiateJavaFileGeneration(File file, String className, int genType, List<String> imports,
- String pkg, YangPluginConfig pluginConfig)
+ String pkg, YangPluginConfig pluginConfig)
throws IOException {
try {
@@ -287,16 +305,11 @@
* @throws IOException when fails to generate a file
*/
public static void initiateJavaFileGeneration(File file, int genType, List<String> imports,
- YangNode curNode, String className)
+ YangNode curNode, String className)
throws IOException {
try {
- if (file.exists()) {
- throw new IOException(file.getName() + " is reused due to YANG naming");
- }
-
file.createNewFile();
-
appendContents(file, genType, imports, curNode, className);
} catch (IOException e) {
throw new IOException("Failed to create " + file.getName() + " class file.");
@@ -314,7 +327,7 @@
* @throws IOException
*/
private static void appendContents(File file, int genType, List<String> importsList, YangNode curNode,
- String className)
+ String className)
throws IOException {
JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -322,6 +335,10 @@
String name = javaFileInfo.getJavaName();
String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath();
+ YangNode augmentedNode = null;
+ if (curNode instanceof YangAugment) {
+ augmentedNode = ((YangAugment) curNode).getAugmentedNode();
+ }
String pkgString = null;
if (genType == GENERATE_EVENT_CLASS
|| genType == GENERATE_EVENT_LISTENER_INTERFACE
@@ -332,9 +349,23 @@
}
switch (genType) {
case INTERFACE_MASK:
- appendHeaderContents(file, pkgString, importsList);
+ if (augmentedNode != null) {
+ appendHeaderContents(file, pkgString, importsList, augmentedNode);
+ } else {
+ appendHeaderContents(file, pkgString, importsList);
+ }
write(file, genType, INTERFACE, curNode, className);
break;
+ case IMPL_CLASS_MASK:
+ appendHeaderContents(file, pkgString, importsList);
+ write(file, genType, IMPL_CLASS, curNode, className);
+ break;
+ case BUILDER_CLASS_MASK:
+ write(file, genType, BUILDER_CLASS, curNode, className);
+ break;
+ case BUILDER_INTERFACE_MASK:
+ write(file, genType, BUILDER_INTERFACE, curNode, className);
+ break;
case GENERATE_SERVICE_AND_MANAGER:
appendHeaderContents(file, pkgString, importsList);
write(file, genType, RPC_INTERFACE, curNode, className);
@@ -373,26 +404,16 @@
* @throws IOException when fails to append contents
*/
private static void appendContents(File file, String fileName, int genType, List<String> importsList, String pkg,
- YangPluginConfig pluginConfig)
+ YangPluginConfig pluginConfig)
throws IOException {
String pkgString = parsePackageString(pkg, importsList);
switch (genType) {
- case IMPL_CLASS_MASK:
- write(file, fileName, genType, IMPL_CLASS, pluginConfig);
- break;
- case BUILDER_INTERFACE_MASK:
- write(file, fileName, genType, BUILDER_INTERFACE, pluginConfig);
- break;
case GENERATE_TYPEDEF_CLASS:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, genType, IMPL_CLASS, pluginConfig);
break;
- case BUILDER_CLASS_MASK:
- appendHeaderContents(file, pkgString, importsList);
- write(file, fileName, genType, BUILDER_CLASS, pluginConfig);
- break;
case GENERATE_UNION_CLASS:
appendHeaderContents(file, pkgString, importsList);
write(file, fileName, genType, IMPL_CLASS, pluginConfig);
@@ -428,7 +449,7 @@
}
/**
- * Appends other contents to interface, builder and typedef classes.
+ * Appends other contents to interface, impl and typedef classes.
* for example : ONOS copyright, imports and package.
*
* @param file generated file
@@ -456,6 +477,39 @@
}
/**
+ * Appends other contents to interface and impl classes when augmented node is not null.
+ * for example : ONOS copyright, imports and package.
+ *
+ * @param file generated file
+ * @param pkg generated package
+ * @param augmentedNode augmented node
+ * @param importsList list of imports
+ * @throws IOException when fails to append contents
+ */
+ private static void appendHeaderContents(File file, String pkg, List<String> importsList, YangNode augmentedNode)
+ throws IOException {
+
+ insertDataIntoJavaFile(file, CopyrightHeader.getCopyrightHeader());
+ insertDataIntoJavaFile(file, pkg);
+
+ /*
+ * TODO: add the file header using
+ * JavaCodeSnippetGen.getFileHeaderComment
+ */
+
+ if (importsList != null) {
+ insertDataIntoJavaFile(file, NEW_LINE);
+ for (String imports : importsList) {
+ if (!imports.contains(getCapitalCase(DEFAULT) + getCapitalCase(getCamelCase(augmentedNode.getName(),
+ null)))
+ && !imports.contains(getCapitalCase(getCamelCase(augmentedNode.getName(), null)) + BUILDER)) {
+ insertDataIntoJavaFile(file, imports);
+ }
+ }
+ }
+ }
+
+ /**
* Writes data to the specific generated file.
*
* @param file generated file
@@ -472,7 +526,7 @@
if ((genType & GENERATE_SERVICE_AND_MANAGER) != 0) {
if (!fileName.matches(REGEX_FOR_ANY_STRING_ENDING_WITH_SERVICE)) {
insertDataIntoJavaFile(file, getJavaDoc(RPC_MANAGER, fileName, false, pluginConfig));
- insertDataIntoJavaFile(file, addComponentString());
+ insertDataIntoJavaFile(file, JavaCodeSnippetGen.addComponentString());
} else {
insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig));
}
@@ -493,30 +547,10 @@
* @throws IOException when fails to write into a file
*/
private static void write(File file, String fileName, int genType, JavaDocType javaDocType,
- YangPluginConfig pluginConfig)
+ YangPluginConfig pluginConfig)
throws IOException {
insertDataIntoJavaFile(file, getJavaDoc(javaDocType, fileName, false, pluginConfig));
insertDataIntoJavaFile(file, generateClassDefinition(genType, fileName));
}
- /**
- * Returns integer attribute for enum's class to get the values.
- *
- * @param className enum's class name
- * @return enum's attribute
- */
- public static String getEnumsValueAttribute(String className) {
- return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className)
- + SEMI_COLAN + NEW_LINE;
- }
-
- /**
- * Returns component string.
- *
- * @return component string
- */
- public static String addComponentString() {
- return NEW_LINE + COMPONENT_ANNOTATION + SPACE + OPEN_PARENTHESIS + IMMEDIATE + SPACE
- + EQUAL + SPACE + TRUE + CLOSE_PARENTHESIS + NEW_LINE + SERVICE_ANNOTATION;
- }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index 8c938ed..9743c92 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -54,11 +54,8 @@
*/
public final class JavaIdentifierSyntax {
- private static final int MAX_MONTHS = 12;
- private static final int MAX_DAYS = 31;
private static final int INDEX_ZERO = 0;
private static final int INDEX_ONE = 1;
- private static final int INDEX_TWO = 2;
private static final int VALUE_CHECK = 10;
private static final String ZERO = "0";
private static final String DATE_FORMAT = "yyyy-MM-dd";
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index a5fc104..cde88ed 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -32,10 +32,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION;
import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.AND;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
-import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
+import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
@@ -45,7 +43,6 @@
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;
@@ -72,7 +69,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.HASH;
import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.IF;
-import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
import static org.onosproject.yangutils.utils.UtilConstants.INT;
import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
@@ -122,7 +118,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
import static org.onosproject.yangutils.utils.UtilConstants.VOID;
import static org.onosproject.yangutils.utils.UtilConstants.YANG_UTILS_TODO;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
@@ -132,6 +127,8 @@
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.OF_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateForTypeConstructor;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
@@ -515,43 +512,38 @@
public static String getConstructorStart(String yangName, YangPluginConfig pluginConfig) {
String javadoc = getConstructorString(yangName, pluginConfig);
- String constructor =
- FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + IMPL + OPEN_PARENTHESIS + yangName
- + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
- + OPEN_CURLY_BRACKET
- + NEW_LINE;
+ String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + getCapitalCase(DEFAULT) + yangName +
+ OPEN_PARENTHESIS + yangName + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT
+ + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
return javadoc + constructor;
}
/**
* Returns the constructor strings for class file.
*
- * @param yangName name of the class
* @param attr attribute info
* @param generatedJavaFiles generated java files
* @param pluginConfig plugin configurations
* @return constructor for class
*/
- public static String getConstructor(String yangName, JavaAttributeInfo attr, int generatedJavaFiles,
+ public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
YangPluginConfig pluginConfig) {
String attributeName = attr.getAttributeName();
String constructor;
if ((generatedJavaFiles & GENERATE_SERVICE_AND_MANAGER) != 0) {
- constructor =
- EIGHT_SPACE_INDENTATION + THIS + PERIOD
- + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
- + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
- + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
- + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+ constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
+ + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
+ + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX
+ + getCapitalCase(getCamelCase(attributeName, pluginConfig.getConflictResolver()))
+ + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
} else {
- constructor =
- EIGHT_SPACE_INDENTATION + THIS + PERIOD
- + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
- + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
- + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
- OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+ constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD
+ + getCamelCase(attributeName, pluginConfig.getConflictResolver()) + SPACE + EQUAL
+ + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD
+ + getCamelCase(attributeName, pluginConfig.getConflictResolver()) +
+ OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
}
return constructor;
}
@@ -593,10 +585,9 @@
inputName = inputName + SPACE + RPC_INPUT_VAR_NAME;
}
- String method =
- getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + outputName + SPACE + rpcName
- + OPEN_PARENTHESIS + inputName + 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 + 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 + parseTypeForReturnValue(outputName) + SEMI_COLAN
+ NEW_LINE;
@@ -614,9 +605,9 @@
*/
public static String getBuild(String yangName) {
return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + SPACE + BUILD + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
- + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE
- + yangName + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
- + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
+ + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + RETURN + SPACE + NEW + SPACE +
+ getCapitalCase(DEFAULT) + yangName + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS + SEMI_COLAN
+ + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
}
/**
@@ -950,59 +941,12 @@
}
/**
- * Returns implementation of add augmentation method of AugmentationHolder class.
- *
- * @return implementation of add augmentation method of AugmentationHolder class
- */
- public static String getAddAugmentInfoMethodImpl() {
- String method = FOUR_SPACE_INDENTATION;
- method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + ADD_STRING
- + AUGMENTATION + OPEN_PARENTHESIS + AUGMENTED_INFO + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
- + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
- + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + ADD_STRING + OPEN_PARENTHESIS + VALUE
- + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
-
- return method;
- }
-
- /**
- * Returns implementation of get augment info list method of AugmentationHolder class.
- *
- * @return implementation of get augment info list method of AugmentationHolder class
- */
- public static String getAugmentInfoListImpl() {
-
- String method = FOUR_SPACE_INDENTATION;
- method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + LIST + DIAMOND_OPEN_BRACKET
- + AUGMENTED_INFO + DIAMOND_CLOSE_BRACKET + SPACE + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST
- + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
- + RETURN + SPACE + getSmallCase(AUGMENTED_INFO) + LIST + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION
- + CLOSE_CURLY_BRACKET;
- return method;
- }
-
- /**
- * Returns implementation of remove augmentation method of AugmentationHolder class.
- *
- * @return implementation of remove augmentation method of AugmentationHolder class
- */
- public static String getRemoveAugmentationImpl() {
- String method = FOUR_SPACE_INDENTATION;
- method = method + getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + "remove"
- + AUGMENTATION + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE
- + EIGHT_SPACE_INDENTATION + GET_METHOD_PREFIX + AUGMENTED_INFO + LIST + OPEN_PARENTHESIS
- + CLOSE_PARENTHESIS + PERIOD + CLEAR + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE
- + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
- return method;
- }
-
- /**
* Returns enum's constructor.
*
* @param className enum's class name
* @return enum's constructor
*/
- public static String getEnumsConstrcutor(String className) {
+ public static String getEnumsConstructor(String className) {
return FOUR_SPACE_INDENTATION + className + OPEN_PARENTHESIS + INT + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
+ OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION + getSmallCase(className) + SPACE + EQUAL
+ SPACE + VALUE + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
@@ -1118,4 +1062,38 @@
throw new TranslatorException("given data type is not supported.");
}
}
+
+ /**
+ * Returns copy constructor for augmented class.
+ *
+ * @param yangName augmente class name
+ * @param augmentName augmented class name
+ * @return copy constructor for augmented class
+ */
+ public static String getAugmentedNodesConstructorStart(String yangName,
+ String augmentName) {
+
+ String javadoc = generateForTypeConstructor(yangName);
+ String constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + yangName + BUILDER + OPEN_PARENTHESIS
+ + augmentName + PERIOD + augmentName + BUILDER + SPACE + VALUE + CLOSE_PARENTHESIS + SPACE
+ + OPEN_CURLY_BRACKET + NEW_LINE;
+ return javadoc + constructor;
+
+ }
+
+ /**
+ * Returns the constructor strings for class file.
+ *
+ * @param attr attribute info
+ * @param pluginConfig plugin configurations
+ * @return constructor for class
+ */
+ public static String getAugmentedConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) {
+
+ String attributeName = getCamelCase(attr.getAttributeName(), pluginConfig.getConflictResolver());
+
+ return EIGHT_SPACE_INDENTATION + THIS + PERIOD + attributeName + OPEN_PARENTHESIS
+ + VALUE + PERIOD + attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS
+ + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE;
+ }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
deleted file mode 100644
index 39620f9..0000000
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TempJavaCodeFragmentFilesUtils.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * 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.File;
-import java.io.IOException;
-import java.util.List;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
-import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
-
-import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION_HOLDER;
-import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
-import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
-import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
-import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_FACTORY_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
-import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION_IMPORT;
-import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
-import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
-import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
-import static java.util.Collections.sort;
-
-/**
- * Represents utilities for temporary java code fragments.
- */
-public final class TempJavaCodeFragmentFilesUtils {
-
- /**
- * Creates a private instance of temporary java code fragment utils.
- */
- private TempJavaCodeFragmentFilesUtils() {
- }
-
- /**
- * Adds import for AugmentationHolders class.
- *
- * @param curNode current YANG node
- * @param imports list of imports
- * @param operation add or delete import
- */
- public static void addAugmentationHoldersImport(YangNode curNode, List<String> imports, boolean operation) {
- String thisImport = getTempJavaFragement(curNode).getJavaImportData().getAugmentationHolderImport();
- performOperationOnImports(imports, thisImport, operation);
- }
-
- /**
- * Adds import for AugmentedInfo class.
- *
- * @param curNode current YANG node
- * @param imports list of imports
- * @param operation add or delete import
- */
- public static void addAugmentedInfoImport(YangNode curNode, List<String> imports, boolean operation) {
- String thisImport = getTempJavaFragement(curNode).getJavaImportData().getAugmentedInfoImport();
- performOperationOnImports(imports, thisImport, operation);
- }
-
- /**
- * Returns temp java fragment.
- *
- * @param curNode current YANG node
- * @return temp java fragments
- */
- public static TempJavaFragmentFiles getTempJavaFragement(YangNode curNode) {
- TempJavaCodeFragmentFiles container = ((TempJavaCodeFragmentFilesContainer) curNode)
- .getTempJavaCodeFragmentFiles();
- if (container.getBeanTempFiles() != null) {
- return container.getBeanTempFiles();
- }
- if (container.getServiceTempFiles() != null) {
- return container.getServiceTempFiles();
- }
-
- return null;
- }
-
- /**
- * Adds import for array list.
- *
- * @param curNode current YANG node
- * @param imports list of imports
- * @param operation add or delete import
- */
- public static void addArrayListImport(YangNode curNode, List<String> imports, boolean operation) {
- String arrayListImport = getTempJavaFragement(curNode).getJavaImportData().getImportForArrayList();
- String listImport = getTempJavaFragement(curNode).getJavaImportData().getImportForList();
- performOperationOnImports(imports, arrayListImport, operation);
- if (!imports.contains(listImport)) {
- /**
- * List can be there because of attribute also , so no need to remove it and operation will
- * always be add(true).
- */
- performOperationOnImports(imports, listImport, true);
- }
- }
-
- /**
- * Adds listener's imports.
- *
- * @param curNode currentYangNode.
- * @param imports import list
- * @param operation add or remove
- * @param classInfo class info to be added to import list
- */
- public static void addListnersImport(YangNode curNode, List<String> imports, boolean operation,
- String classInfo) {
- String thisImport = "";
- if (classInfo.equals(LISTENER_SERVICE)) {
- thisImport = getTempJavaFragement(curNode).getJavaImportData().getListenerServiceImport();
- performOperationOnImports(imports, thisImport, operation);
- } else {
- thisImport = getTempJavaFragement(curNode).getJavaImportData().getListenerRegistryImport();
- performOperationOnImports(imports, thisImport, operation);
- }
- }
-
- /**
- * Adds annotations imports.
- *
- * @param imports list if imports
- * @param operation to add or to delete
- */
- public static void addAnnotationsImports(List<String> imports, boolean operation) {
- if (operation) {
- imports.add(ACTIVATE_ANNOTATION_IMPORT);
- imports.add(DEACTIVATE_ANNOTATION_IMPORT);
- imports.add(COMPONENT_ANNOTATION_IMPORT);
- imports.add(SERVICE_ANNOTATION_IMPORT);
- imports.add(LOGGER_FACTORY_IMPORT);
- imports.add(LOGGER_IMPORT);
- } else {
- imports.remove(ACTIVATE_ANNOTATION_IMPORT);
- imports.remove(DEACTIVATE_ANNOTATION_IMPORT);
- imports.remove(COMPONENT_ANNOTATION_IMPORT);
- imports.remove(SERVICE_ANNOTATION_IMPORT);
- imports.remove(LOGGER_FACTORY_IMPORT);
- imports.remove(LOGGER_IMPORT);
- }
- sortImports(imports);
- }
-
- /**
- * Performs given operations on import list.
- *
- * @param imports list of imports
- * @param curImport current import
- * @param operation add or remove
- * @return import list
- */
- private static List<String> performOperationOnImports(List<String> imports, String curImport,
- boolean operation) {
- if (operation) {
- imports.add(curImport);
- } else {
- imports.remove(curImport);
- }
- sortImports(imports);
- return imports;
- }
-
- /**
- * Returns true if AugmentationHolder class needs to be extended.
- *
- * @param extendsList list of classes need to be extended
- * @return true or false
- */
- public static boolean isAugmentationHolderExtended(List<JavaQualifiedTypeInfo> extendsList) {
- for (JavaQualifiedTypeInfo info : extendsList) {
- return info.getClassInfo().equals(AUGMENTATION_HOLDER);
- }
- return false;
- }
-
- /**
- * Returns true if AugmentedInfo class needs to be extended.
- *
- * @param extendsList list of classes need to be extended
- * @return true or false
- */
- public static boolean isAugmentedInfoExtended(List<JavaQualifiedTypeInfo> extendsList) {
- for (JavaQualifiedTypeInfo info : extendsList) {
- return info.getClassInfo().equals(AUGMENTED_INFO);
- }
- return false;
- }
-
- /**
- * Closes the file handle for temporary file.
- *
- * @param file file to be closed
- * @param toBeDeleted flag to indicate if file needs to be deleted
- * @throws IOException when failed to close the file handle
- */
- public static void closeFile(File file, boolean toBeDeleted)
- throws IOException {
-
- if (file != null) {
- updateFileHandle(file, null, true);
- if (toBeDeleted) {
- file.delete();
- }
- }
- }
-
- /**
- * Returns sorted import list.
- *
- * @param imports import list
- * @return sorted import list
- */
- public static List<String> sortImports(List<String> imports) {
- sort(imports);
- return imports;
- }
-
- /**
- * Returns event enum start.
- *
- * @return event enum start
- */
- public static String getEventEnumTypeStart() {
- return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE + SPACE + OPEN_CURLY_BRACKET
- + NEW_LINE;
- }
-}