[ONOS-4799],[ONOS-4351] Augment inter file linker and Generated Code refactored.
Change-Id: Id1f3ac9c90a632373f51cc75d499c3110216be17
diff --git a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 03ace2a..bbc346d 100644
--- a/utils/yangutils/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/utils/yangutils/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);
+ }
}
/**