[ONOS-4839] update file priority for translator and OP param file impl defect fix
Change-Id: Ieaef43f915996ed0a34dfa17c338ab612716b2bc
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 19314e2..ff28b66 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -22,14 +22,15 @@
import java.util.List;
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
+import org.onosproject.yangutils.datamodel.YangAugment;
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.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
import org.onosproject.yangutils.datamodel.YangSubModule;
-import org.onosproject.yangutils.datamodel.YangTypeDef;
+import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -40,17 +41,12 @@
import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
-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_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.AUGMENTED;
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.UtilConstants.YANG_AUGMENTED_INFO;
import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -80,7 +76,8 @@
throws IOException {
if (javaCodeGeneratorInfo instanceof YangJavaAugment) {
javaCodeGeneratorInfo.getJavaFileInfo()
- .setJavaName(((YangJavaAugment) javaCodeGeneratorInfo).getAugmentClassName());
+ .setJavaName(getAugmentClassName((YangJavaAugment) javaCodeGeneratorInfo,
+ yangPluginConfig));
} else {
javaCodeGeneratorInfo.getJavaFileInfo()
.setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
@@ -192,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");
@@ -215,7 +212,7 @@
if (javaCodeGeneratorInfo instanceof YangJavaModule) {
for (YangNode notificaiton : ((YangJavaModule) javaCodeGeneratorInfo).getNotificationNodes()) {
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .getServiceTempFiles()
+ .getEventFragmentFiles()
.addJavaSnippetOfEvent(notificaiton, yangPluginConfig);
}
}
@@ -223,7 +220,7 @@
for (YangNode notificaiton : ((YangJavaSubModule) javaCodeGeneratorInfo)
.getNotificationNodes()) {
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .getServiceTempFiles()
+ .getEventFragmentFiles()
.addJavaSnippetOfEvent(notificaiton, yangPluginConfig);
}
}
@@ -273,57 +270,13 @@
TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles();
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(augmentedClassInfo, (YangNode) javaCodeGeneratorInfo,
- tempJavaCodeFragmentFiles.getBeanTempFiles());
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
- .addToExtendsList(augmentedBuilderInfo, (YangNode) javaCodeGeneratorInfo,
- tempJavaCodeFragmentFiles.getBeanTempFiles());
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
- .addToExtendsList(augmentedImplInfo, (YangNode) javaCodeGeneratorInfo,
- tempJavaCodeFragmentFiles.getBeanTempFiles());
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
- .addToExtendsList(augmentedBuilderClassInfo, (YangNode) javaCodeGeneratorInfo,
- tempJavaCodeFragmentFiles.getBeanTempFiles());
-
JavaQualifiedTypeInfo yangAugmentedInfo = new JavaQualifiedTypeInfo();
yangAugmentedInfo.setClassInfo(YANG_AUGMENTED_INFO);
yangAugmentedInfo.setPkgInfo(YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG);
javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
.addToExtendsList(yangAugmentedInfo, (YangNode) javaCodeGeneratorInfo,
tempJavaCodeFragmentFiles.getBeanTempFiles());
-
-
}
-
if (javaCodeGeneratorInfo instanceof YangCase) {
YangNode parent = ((YangCase) javaCodeGeneratorInfo).getParent();
JavaQualifiedTypeInfo parentsInfo = new JavaQualifiedTypeInfo();
@@ -378,27 +331,9 @@
javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
}
- if (javaCodeGeneratorInfo instanceof YangJavaModule) {
- if (!((YangJavaModule) javaCodeGeneratorInfo)
- .isNotificationChildNodePresent((YangNode) javaCodeGeneratorInfo)) {
- updateCodeGenInfoForEvent(javaCodeGeneratorInfo);
- }
- } else if (javaCodeGeneratorInfo instanceof YangJavaSubModule) {
- if (!((YangJavaSubModule) javaCodeGeneratorInfo)
- .isNotificationChildNodePresent((YangNode) javaCodeGeneratorInfo)) {
- updateCodeGenInfoForEvent(javaCodeGeneratorInfo);
- }
- }
generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
}
- /*Updates java code generator info with events info.*/
- private static void updateCodeGenInfoForEvent(JavaCodeGeneratorInfo javaCodeGeneratorInfo) {
- javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_EVENT_SUBJECT_CLASS);
- javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_EVENT_CLASS);
- javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_EVENT_LISTENER_INTERFACE);
- }
-
/**
* Returns the node package string.
*
@@ -429,9 +364,6 @@
* @return true if root node contains any data node
*/
public static boolean isManagerCodeGenRequired(YangNode node) {
- YangLeavesHolder holder = (YangLeavesHolder) node;
-
- boolean isCodeReq = true;
List<YangNode> childNodes = new ArrayList<>();
node = node.getChild();
@@ -441,16 +373,19 @@
}
if (childNodes.size() == 0) {
- if (holder.getListOfLeaf() != null && !holder.getListOfLeaf().isEmpty()) {
- isCodeReq = true;
- } else if (holder.getListOfLeafList() != null && !holder.getListOfLeafList().isEmpty()) {
- isCodeReq = true;
- }
- return isCodeReq;
+ return false;
} else if (childNodes.size() == 1) {
- return childNodes.get(0) instanceof YangTypeDef && childNodes.get(0) instanceof YangGrouping;
+ return !(childNodes.get(0) instanceof YangTranslatorOperatorNode);
}
- return isCodeReq;
+ List<Boolean> booleanData = new ArrayList<>();
+ for (YangNode child : childNodes) {
+ if (child instanceof YangTranslatorOperatorNode) {
+ booleanData.add(false);
+ } else {
+ booleanData.add(true);
+ }
+ }
+ return booleanData.contains(true);
}
/**
@@ -465,8 +400,7 @@
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"))) {
+ if (file.getName().contentEquals(getCapitalCase(info.getJavaName() + MANAGER + ".java"))) {
return false;
}
}
@@ -484,12 +418,11 @@
public static String getAugmentedNodesPackage(YangNode node, YangPluginConfig yangPluginConfig) {
List<String> clsInfo = new ArrayList<>();
- node = node.getParent();
- while (node != null) {
+ while (node.getParent() != null) {
if (!(node instanceof YangModule)
|| !(node instanceof YangSubModule)) {
if (node instanceof YangJavaAugment) {
- clsInfo.add(((YangJavaAugment) node).getAugmentClassName());
+ clsInfo.add(getAugmentClassName((YangAugment) node, yangPluginConfig));
} else {
clsInfo.add(getCamelCase(node.getName(), yangPluginConfig.getConflictResolver()));
}
@@ -519,4 +452,21 @@
return pkg.toString().toLowerCase();
}
+
+ /**
+ * Returns augment class name.
+ *
+ * @param augment YANG augment
+ * @param yangPluginConfig plugin configurations
+ * @return augment class name
+ */
+ public static String getAugmentClassName(YangAugment augment, YangPluginConfig yangPluginConfig) {
+ YangNodeIdentifier nodeId = augment.getTargetNode().get(augment.getTargetNode().size() - 1).getNodeIdentifier();
+ String name = getCapitalCase(getCamelCase(nodeId.getName(), yangPluginConfig.getConflictResolver()));
+ if (nodeId.getPrefix() != null) {
+ return AUGMENTED + getCapitalCase(nodeId.getPrefix()) + name;
+ } else {
+ return AUGMENTED + name;
+ }
+ }
}