Adding builder and operation type in generated interfaces
Change-Id: I0c3ed6f01a8f933ad91ce1a46aeebc62029ca47a
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 7891b08..ed37a36 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
@@ -16,10 +16,6 @@
package org.onosproject.yangutils.translator.tojava;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
@@ -38,11 +34,22 @@
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_PARENT_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.INVALID_TRANSLATION_NODE;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
+import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsgForCodeGenerator;
import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
@@ -54,145 +61,156 @@
*/
public final class YangJavaModelUtils {
- /**
- * Creates an instance of YANG java model utility.
- */
+ // No instantiation.
private YangJavaModelUtils() {
}
/**
* Updates YANG java file package information.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPluginConfig YANG plugin config
+ * @param info YANG java file info node
+ * @param config YANG plugin config
* @throws IOException IO operations fails
*/
- public static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ public static void updatePackageInfo(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- if (javaCodeGeneratorInfo instanceof YangJavaAugmentTranslator) {
- updatePackageForAugmentInfo(javaCodeGeneratorInfo, yangPluginConfig);
+
+ JavaFileInfoTranslator translator = info.getJavaFileInfo();
+
+ if (info instanceof YangJavaAugmentTranslator) {
+ updatePackageForAugmentInfo(info, config);
} else {
- javaCodeGeneratorInfo.getJavaFileInfo()
- .setJavaName(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(),
- yangPluginConfig.getConflictResolver()));
- javaCodeGeneratorInfo.getJavaFileInfo().setJavaAttributeName(javaCodeGeneratorInfo
- .getJavaFileInfo().getJavaName());
- javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo));
+ translator.setJavaName(getCamelCase(((YangNode) info).getName(),
+ config.getConflictResolver()));
+ translator.setJavaAttributeName(info.getJavaFileInfo()
+ .getJavaName());
+ translator.setPackage(getCurNodePackage((YangNode) info));
}
- javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
- getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
-
- javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
- javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPluginConfig);
-
+ updateCommonPackageInfo(translator, info, config);
}
/**
* Updates YANG java file package information.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPluginConfig YANG plugin config
+ * @param info YANG java file info node
+ * @param config YANG plugin config
* @throws IOException IO operations fails
*/
- private static void updatePackageForAugmentInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ private static void updatePackageForAugmentInfo(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- javaCodeGeneratorInfo.getJavaFileInfo()
- .setJavaName(getAugmentClassName((YangJavaAugmentTranslator) javaCodeGeneratorInfo,
- yangPluginConfig));
- javaCodeGeneratorInfo.getJavaFileInfo().setPackage(
- getAugmentsNodePackage((YangNode) javaCodeGeneratorInfo, yangPluginConfig));
- javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath(
- getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage()));
- javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPluginConfig.getCodeGenDir());
- javaCodeGeneratorInfo.getJavaFileInfo().setPluginConfig(yangPluginConfig);
+
+ JavaFileInfoTranslator translator = info.getJavaFileInfo();
+
+ translator.setJavaName(getAugmentClassName(
+ (YangJavaAugmentTranslator) info, config));
+ translator.setPackage(getAugmentsNodePackage((YangNode) info, config));
+ updateCommonPackageInfo(translator, info, config);
}
/**
* Returns package for augment node.
*
- * @param yangNode augment node
- * @param yangPluginConfig plugin configurations
+ * @param yangNode augment node
+ * @param config plugin configurations
* @return package for augment node
*/
- private static String getAugmentsNodePackage(YangNode yangNode, YangPluginConfig yangPluginConfig) {
+ private static String getAugmentsNodePackage(YangNode yangNode,
+ YangPluginConfig config) {
YangAugment augment = (YangAugment) yangNode;
StringBuilder augmentPkg = new StringBuilder();
augmentPkg.append(getCurNodePackage(augment));
- String pkg = PERIOD;
+ StringBuilder pkg = new StringBuilder();
+ pkg.append(PERIOD);
for (YangAtomicPath atomicPath : augment.getTargetNode()) {
- pkg = pkg + getCamelCase(atomicPath.getNodeIdentifier().getName(), yangPluginConfig.getConflictResolver())
- + PERIOD;
+ pkg.append(getCamelCase(atomicPath.getNodeIdentifier().getName(),
+ config.getConflictResolver()))
+ .append(PERIOD);
}
- pkg = trimAtLast(pkg, PERIOD);
- augmentPkg.append(pkg.toLowerCase());
+ augmentPkg.append(trimAtLast(pkg.toString(), PERIOD).toLowerCase());
return augmentPkg.toString();
}
/**
* Updates YANG java file package information for specified package.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPlugin YANG plugin config
- * @throws IOException IO operations fails
+ * @param info YANG java file info node
+ * @param config YANG plugin config
*/
- private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin,
- 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().setPluginConfig(yangPlugin);
+ private static void updatePackageInfo(JavaCodeGeneratorInfo info,
+ YangPluginConfig config,
+ String pkg) {
+
+ JavaFileInfoTranslator translator = info.getJavaFileInfo();
+ translator.setJavaName(getCamelCase(((YangNode) info).getName(),
+ config.getConflictResolver()));
+ translator.setPackage(pkg);
+ updateCommonPackageInfo(translator, info, config);
+ }
+
+ /**
+ * Updates common package information.
+ *
+ * @param translator JAVA file info translator
+ * @param info YANG java file info node
+ * @param config YANG plugin config
+ */
+ private static void updateCommonPackageInfo(JavaFileInfoTranslator translator,
+ JavaCodeGeneratorInfo info,
+ YangPluginConfig config) {
+ translator.setPackageFilePath(getPackageDirPathFromJavaJPackage(
+ info.getJavaFileInfo().getPackage()));
+ translator.setBaseCodeGenPath(config.getCodeGenDir());
+ translator.setPluginConfig(config);
}
/**
* Updates temporary java code fragment files.
*
- * @param javaCodeGeneratorInfo YANG java file info node
+ * @param info YANG java file info node
* @throws IOException IO operations fails
*/
- private static void createTempFragmentFile(JavaCodeGeneratorInfo javaCodeGeneratorInfo)
+ private static void createTempFragmentFile(JavaCodeGeneratorInfo info)
throws IOException {
- javaCodeGeneratorInfo.setTempJavaCodeFragmentFiles(
- new TempJavaCodeFragmentFiles(javaCodeGeneratorInfo.getJavaFileInfo()));
+ info.setTempJavaCodeFragmentFiles(
+ new TempJavaCodeFragmentFiles(info.getJavaFileInfo()));
}
/**
* Updates leaf information in temporary java code fragment files.
*
- * @param javaCodeGeneratorInfo YANG java file info node
+ * @param info YANG java file info node
* @throws IOException IO operations fails
*/
- private static void updateTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ private static void updateTempFragmentFiles(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- if (javaCodeGeneratorInfo instanceof RpcNotificationContainer) {
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().setRooNode(true);
+ TempJavaCodeFragmentFiles translator =
+ info.getTempJavaCodeFragmentFiles();
+
+ if (info instanceof RpcNotificationContainer) {
+ getBeanFiles(info).setRootNode(true);
/*
* Module / sub module node code generation.
*/
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .getServiceTempFiles().addCurNodeLeavesInfoToTempFiles(
- (YangNode) javaCodeGeneratorInfo, yangPluginConfig);
- if (javaCodeGeneratorInfo instanceof YangJavaModuleTranslator) {
- if (!((YangJavaModuleTranslator) javaCodeGeneratorInfo).getNotificationNodes().isEmpty()) {
- updateNotificationNodeInfo(javaCodeGeneratorInfo, yangPluginConfig);
+ translator.getServiceTempFiles()
+ .addCurNodeLeavesInfoToTempFiles((YangNode) info, config);
+ if (info instanceof YangJavaModuleTranslator) {
+ if (!((YangJavaModuleTranslator) info).getNotificationNodes()
+ .isEmpty()) {
+ updateNotificationNodeInfo(info, config);
}
- } else if (javaCodeGeneratorInfo instanceof YangJavaSubModuleTranslator) {
- if (!((YangJavaSubModuleTranslator) javaCodeGeneratorInfo).getNotificationNodes().isEmpty()) {
- updateNotificationNodeInfo(javaCodeGeneratorInfo, yangPluginConfig);
+ } else if (info instanceof YangJavaSubModuleTranslator) {
+ if (!((YangJavaSubModuleTranslator) info).getNotificationNodes()
+ .isEmpty()) {
+ updateNotificationNodeInfo(info, config);
}
}
-
}
- if (javaCodeGeneratorInfo instanceof YangLeavesHolder) {
+ if (info instanceof YangLeavesHolder) {
/*
* Container
* Case
@@ -202,155 +220,157 @@
* Notification
* Output
*/
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .getBeanTempFiles().addCurNodeLeavesInfoToTempFiles(
- (YangNode) javaCodeGeneratorInfo, yangPluginConfig);
- } else if (javaCodeGeneratorInfo instanceof YangTypeHolder) {
+ getBeanFiles(info).addCurNodeLeavesInfoToTempFiles((YangNode) info,
+ config);
+
+ // Add operation type as an attribute.
+ getBeanFiles(info).addOperationTypeToTempFiles((YangNode) info,
+ config);
+ } else if (info instanceof YangTypeHolder) {
/*
* Typedef
* Union
*/
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .addTypeInfoToTempFiles((YangTypeHolder) javaCodeGeneratorInfo, yangPluginConfig);
- } else if (javaCodeGeneratorInfo instanceof YangJavaEnumerationTranslator) {
+ translator.addTypeInfoToTempFiles((YangTypeHolder) info, config);
+ } else if (info instanceof YangJavaEnumerationTranslator) {
/*
* Enumeration
*/
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getEnumerationTempFiles()
- .addEnumAttributeToTempFiles((YangNode) javaCodeGeneratorInfo, yangPluginConfig);
-
- } else if (javaCodeGeneratorInfo instanceof YangChoice) {
+ translator.getEnumerationTempFiles()
+ .addEnumAttributeToTempFiles((YangNode) info, config);
+ } else if (info instanceof YangChoice) {
/*Do nothing, only the interface needs to be generated*/
} else {
- throw new TranslatorException("Unsupported Node Translation "
- + javaCodeGeneratorInfo.getLineNumber() + " at " +
- javaCodeGeneratorInfo.getCharPosition()
- + " in " + javaCodeGeneratorInfo.getFileName());
+ throw new TranslatorException(
+ getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+ info));
}
}
/**
* Process generate code entry of YANG node.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPluginConfig plugin configurations
+ * @param info YANG java file info node
+ * @param config plugin configurations
* @throws IOException IO operations fails
*/
- private static void generateTempFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ private static void generateTempFiles(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("translation is not supported for the node "
- + javaCodeGeneratorInfo.getLineNumber() + " at " +
- javaCodeGeneratorInfo.getCharPosition()
- + " in " + javaCodeGeneratorInfo.getFileName());
+ if (!(info instanceof YangNode)) {
+ throw new TranslatorException(
+ getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+ info));
}
- createTempFragmentFile(javaCodeGeneratorInfo);
- updateTempFragmentFiles(javaCodeGeneratorInfo, yangPluginConfig);
-
+ createTempFragmentFile(info);
+ updateTempFragmentFiles(info, config);
}
/**
* Updates notification node info in service temporary file.
*
- * @param javaCodeGeneratorInfo java code generator info
- * @param yangPluginConfig plugin configurations
+ * @param info java code generator info
+ * @param config plugin configurations
* @throws IOException when fails to do IO operations
*/
- private static void updateNotificationNodeInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ private static void updateNotificationNodeInfo(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- if (javaCodeGeneratorInfo instanceof YangJavaModuleTranslator) {
- for (YangNode notification : ((YangJavaModuleTranslator) javaCodeGeneratorInfo).getNotificationNodes()) {
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .getEventFragmentFiles()
- .addJavaSnippetOfEvent(notification, yangPluginConfig);
+ TempJavaCodeFragmentFiles translator =
+ info.getTempJavaCodeFragmentFiles();
+ if (info instanceof YangJavaModuleTranslator) {
+ for (YangNode notification : ((YangJavaModuleTranslator) info)
+ .getNotificationNodes()) {
+ translator.getEventFragmentFiles()
+ .addJavaSnippetOfEvent(notification, config);
}
}
- if (javaCodeGeneratorInfo instanceof YangJavaSubModuleTranslator) {
- for (YangNode notification : ((YangJavaSubModuleTranslator) javaCodeGeneratorInfo)
+ if (info instanceof YangJavaSubModuleTranslator) {
+ for (YangNode notification : ((YangJavaSubModuleTranslator) info)
.getNotificationNodes()) {
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles()
- .getEventFragmentFiles()
- .addJavaSnippetOfEvent(notification, yangPluginConfig);
+ translator.getEventFragmentFiles()
+ .addJavaSnippetOfEvent(notification, config);
}
}
}
/**
- * Generates code for the current ata model node and adds itself as an attribute in the parent.
+ * Generates code for the current ata model node and adds itself as an
+ * attribute in the parent.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPlugin YANG plugin config
- * @param isMultiInstance flag to indicate whether it's a list
+ * @param info YANG java file info node
+ * @param config YANG plugin config
+ * @param isMultiInstance flag to indicate whether it's a list
* @throws IOException IO operations fails
*/
- public static void generateCodeAndUpdateInParent(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPlugin, boolean isMultiInstance)
+ public static void generateCodeAndUpdateInParent(JavaCodeGeneratorInfo info,
+ YangPluginConfig config,
+ boolean isMultiInstance)
throws IOException {
- if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("Invalid node for translation " +
- javaCodeGeneratorInfo.getLineNumber() + " at " +
- javaCodeGeneratorInfo.getCharPosition()
- + " in " + javaCodeGeneratorInfo.getFileName());
+ if (!(info instanceof YangNode)) {
+ throw new TranslatorException(
+ getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+ info));
}
/*
* Generate the Java files corresponding to the current node.
*/
- generateCodeOfAugmentableNode(javaCodeGeneratorInfo, yangPlugin);
+ generateCodeOfAugmentableNode(info, config);
/*
* Update the current nodes info in its parent nodes generated files.
*/
- addCurNodeInfoInParentTempFile((YangNode) javaCodeGeneratorInfo, isMultiInstance, yangPlugin);
+ addCurNodeInfoInParentTempFile((YangNode) info, isMultiInstance,
+ config);
}
/**
- * Generates code for the current data model node and adds support for it to be augmented.
+ * Generates code for the current data model node and adds support for it to
+ * be augmented.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPlugin YANG plugin config
+ * @param info YANG java file info node
+ * @param config YANG plugin config
* @throws IOException IO operations fails
*/
- public static void generateCodeOfAugmentableNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPlugin)
+ public static void generateCodeOfAugmentableNode(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("invalid node for translation " +
- javaCodeGeneratorInfo.getLineNumber() + " at " +
- javaCodeGeneratorInfo.getCharPosition()
- + " in " + javaCodeGeneratorInfo.getFileName());
+ if (!(info instanceof YangNode)) {
+ throw new TranslatorException(
+ getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+ info));
}
- generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
- TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles();
+ generateCodeOfNode(info, config);
+ TempJavaCodeFragmentFiles tempFiles =
+ info.getTempJavaCodeFragmentFiles();
- if (javaCodeGeneratorInfo instanceof YangCase) {
- YangNode parent = ((YangCase) javaCodeGeneratorInfo).getParent();
- JavaQualifiedTypeInfoTranslator parentsInfo = getQualifierInfoForCasesParent(parent, yangPlugin);
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles().getJavaExtendsListHolder()
- .addToExtendsList(parentsInfo, (YangNode) javaCodeGeneratorInfo,
- tempJavaCodeFragmentFiles.getBeanTempFiles());
+ if (info instanceof YangCase) {
+ YangNode parent = ((YangCase) info).getParent();
+ JavaQualifiedTypeInfoTranslator typeInfo =
+ getQualifierInfoForCasesParent(parent, config);
+ getBeanFiles(info).getJavaExtendsListHolder()
+ .addToExtendsList(typeInfo, (YangNode) info,
+ tempFiles.getBeanTempFiles());
- javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles().getBeanTempFiles()
- .addParentInfoInCurNodeTempFile((YangNode) javaCodeGeneratorInfo, yangPlugin);
-
+ getBeanFiles(info).addParentInfoInCurNodeTempFile((YangNode) info,
+ config);
}
}
/**
* Returns cases parent's qualified info.
*
- * @param parent parent node
- * @param yangPluginConfig plugin configuration
+ * @param parent parent node
+ * @param config plugin configuration
* @return cases parent's qualified info
*/
- public static JavaQualifiedTypeInfoTranslator getQualifierInfoForCasesParent(YangNode parent,
- YangPluginConfig yangPluginConfig) {
+ public static JavaQualifiedTypeInfoTranslator
+ getQualifierInfoForCasesParent(YangNode parent,
+ YangPluginConfig config) {
String parentName;
String parentPkg;
- JavaQualifiedTypeInfoTranslator parentsInfo = new JavaQualifiedTypeInfoTranslator();
JavaFileInfoTranslator parentInfo;
if (parent instanceof YangChoice) {
parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
@@ -362,59 +382,60 @@
parentName = getCapitalCase(parentInfo.getJavaName());
parentPkg = parentInfo.getPackage();
} else {
- parentName = getCapitalCase(getCamelCase(parent.getName(), yangPluginConfig.getConflictResolver()));
- parentPkg = getNodesPackage(parent, yangPluginConfig);
+ parentName = getCapitalCase(getCamelCase(parent.getName(),
+ config.getConflictResolver()));
+ parentPkg = getNodesPackage(parent, config);
}
- parentsInfo.setClassInfo(parentName);
- parentsInfo.setPkgInfo(parentPkg);
- return parentsInfo;
-
+ JavaQualifiedTypeInfoTranslator qualifiedTypeInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ qualifiedTypeInfo.setClassInfo(parentName);
+ qualifiedTypeInfo.setPkgInfo(parentPkg);
+ return qualifiedTypeInfo;
}
/**
* Generates code for the current data model node.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPluginConfig YANG plugin config
+ * @param info YANG java file info node
+ * @param config YANG plugin config
* @throws IOException IO operations fails
*/
- public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig)
+ public static void generateCodeOfNode(JavaCodeGeneratorInfo info,
+ YangPluginConfig config)
throws IOException {
- if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("invalid node for translation "
- + javaCodeGeneratorInfo.getLineNumber() + " at " +
- javaCodeGeneratorInfo.getCharPosition()
- + " in " + javaCodeGeneratorInfo.getFileName());
+ if (!(info instanceof YangNode)) {
+ throw new TranslatorException(
+ getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+ info));
}
- updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig);
- generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
+ updatePackageInfo(info, config);
+ generateTempFiles(info, config);
}
/**
* Generates code for the root module/sub-module node.
*
- * @param javaCodeGeneratorInfo YANG java file info node
- * @param yangPluginConfig YANG plugin config
- * @param rootPkg package of the root node
+ * @param info YANG java file info node
+ * @param config YANG plugin config
+ * @param rootPkg package of the root node
* @throws IOException IO operations fails
*/
- public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo,
- YangPluginConfig yangPluginConfig, String rootPkg)
+ public static void generateCodeOfRootNode(JavaCodeGeneratorInfo info,
+ YangPluginConfig config,
+ String rootPkg)
throws IOException {
- if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("invalid node for translation " + javaCodeGeneratorInfo.getLineNumber()
- + " at " +
- javaCodeGeneratorInfo.getCharPosition()
- + " in " + javaCodeGeneratorInfo.getFileName());
+ if (!(info instanceof YangNode)) {
+ throw new TranslatorException(
+ getErrorMsgForCodeGenerator(INVALID_TRANSLATION_NODE,
+ info));
}
- updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig, rootPkg);
+ updatePackageInfo(info, config, rootPkg);
- if (isRpcChildNodePresent((YangNode) javaCodeGeneratorInfo)) {
- javaCodeGeneratorInfo.getJavaFileInfo().addGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
+ if (isRpcChildNodePresent((YangNode) info)) {
+ info.getJavaFileInfo()
+ .addGeneratedFileTypes(GENERATE_SERVICE_AND_MANAGER);
}
-
- generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
+ generateTempFiles(info, config);
}
/**
@@ -423,28 +444,23 @@
* @param curNode current java node whose package string needs to be set
* @return returns the root package string
*/
- public static String getCurNodePackage(YangNode curNode) {
+ public static String getCurNodePackage(YangNode curNode)
+ throws TranslatorException {
String pkg;
- if (!(curNode instanceof JavaFileInfoContainer)
- || curNode.getParent() == null) {
- throw new TranslatorException("missing parent node to get current node's package " +
- curNode.getName() + " in " +
- curNode.getLineNumber() + " at " +
- curNode.getCharPosition()
- + " in " + curNode.getFileName());
+ if (!(curNode instanceof JavaFileInfoContainer) ||
+ curNode.getParent() == null) {
+ throw new TranslatorException(getErrorMsg(INVALID_NODE, curNode));
}
YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
if (!(parentNode instanceof JavaFileInfoContainer)) {
- throw new TranslatorException("missing parent java node to get current node's package " +
- curNode.getName() + " in " +
- curNode.getLineNumber() + " at " +
- curNode.getCharPosition()
- + " in " + curNode.getFileName());
+ throw new TranslatorException(getErrorMsg(INVALID_PARENT_NODE,
+ curNode));
}
- JavaFileInfoTranslator parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
- pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
+ JavaFileInfoTranslator handle =
+ ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
+ pkg = handle.getPackage() + PERIOD + handle.getJavaName();
return pkg.toLowerCase();
}
@@ -455,74 +471,80 @@
* @return true if root node contains any data node
*/
public static boolean isRootNodesCodeGenRequired(YangNode node) {
- YangLeavesHolder holder = (YangLeavesHolder) node;
-
- if (holder.getListOfLeaf().isEmpty()) {
- if (holder.getListOfLeafList().isEmpty()) {
- YangNode tempNode = node.getChild();
- if (tempNode == null) {
- return false;
- }
- while (tempNode != null) {
- if (!(tempNode instanceof YangTranslatorOperatorNode)) {
- return true;
- }
- tempNode = tempNode.getNextSibling();
- }
- return false;
- } else {
- return true;
- }
- } else {
- return true;
- }
+ return isNodeCodeGenRequired(node, true);
}
/**
* Returns true if get/set method of root node are required.
*
- * @param curNode root node
+ * @param node root node
* @return true if get/set method of root node are required
*/
- public static boolean isGetSetOfRootNodeRequired(YangNode curNode) {
- YangLeavesHolder holder = (YangLeavesHolder) curNode;
+ public static boolean isGetSetOfRootNodeRequired(YangNode node) {
+ return isNodeCodeGenRequired(node, false);
+ }
- if (holder.getListOfLeaf().isEmpty()) {
- if (holder.getListOfLeafList().isEmpty()) {
- curNode = curNode.getChild();
- if (curNode == null) {
- return false;
- }
- while (curNode != null) {
- if (!(curNode instanceof YangAugment)) {
- return true;
- }
- curNode = curNode.getNextSibling();
- }
- return false;
- } else {
- return true;
- }
- } else {
+ /**
+ * Returns true if either get/set method of root node are required or root
+ * node contains any data node. This check is done depending on the
+ * boolean parameter indicating whether check to be performed for root
+ * node code generation or get/set method generation.
+ *
+ * @param node root node
+ * @param rootNodeGen flag indicating check type
+ * @return true if check pass, false otherwise
+ */
+ public static boolean isNodeCodeGenRequired(YangNode node,
+ boolean rootNodeGen) {
+ YangLeavesHolder holder = (YangLeavesHolder) node;
+
+ if (!holder.getListOfLeaf().isEmpty()) {
return true;
}
+ if (!holder.getListOfLeafList().isEmpty()) {
+ return true;
+ }
+ node = node.getChild();
+ if (node == null) {
+ return false;
+ }
+
+ if (rootNodeGen) {
+ while (node != null) {
+ if (!(node instanceof YangTranslatorOperatorNode)) {
+ return true;
+ }
+ node = node.getNextSibling();
+ }
+ return false;
+ }
+ while (node != null) {
+ if (!(node instanceof YangAugment)) {
+ return true;
+ }
+ node = node.getNextSibling();
+ }
+ return false;
}
/**
* Returns nodes package.
*
- * @param node YANG node
- * @param yangPluginConfig plugin config
+ * @param node YANG node
+ * @param config plugin config
* @return java package
*/
- public static String getNodesPackage(YangNode node, YangPluginConfig yangPluginConfig) {
+ public static String getNodesPackage(YangNode node,
+ YangPluginConfig config) {
List<String> clsInfo = new ArrayList<>();
while (node.getParent() != null) {
if (node instanceof YangJavaAugmentTranslator) {
- clsInfo.add(getAugmentClassName((YangAugment) node, yangPluginConfig));
+ clsInfo.add(getAugmentClassName((YangAugment) node,
+ config));
} else {
- clsInfo.add(getCamelCase(node.getName(), yangPluginConfig.getConflictResolver()));
+ clsInfo.add(getCamelCase(node.getName(), config
+ .getConflictResolver()));
}
node = node.getParent();
}
@@ -530,41 +552,44 @@
StringBuilder pkg = new StringBuilder();
if (node instanceof YangJavaModuleTranslator) {
YangJavaModuleTranslator module = (YangJavaModuleTranslator) node;
- pkg.append(getRootPackage(module.getVersion(), module.getNameSpace(), module
- .getRevision(), yangPluginConfig.getConflictResolver()));
+ pkg.append(getRootPackage(module.getVersion(), module.getNameSpace(),
+ module.getRevision(),
+ config.getConflictResolver()));
} else if (node instanceof YangJavaSubModuleTranslator) {
- YangJavaSubModuleTranslator subModule = (YangJavaSubModuleTranslator) node;
+ YangJavaSubModuleTranslator subModule =
+ (YangJavaSubModuleTranslator) node;
pkg.append(getRootPackage(subModule.getVersion(),
subModule.getNameSpaceFromModule(),
- subModule.getRevision(), yangPluginConfig.getConflictResolver()));
+ subModule.getRevision(),
+ config.getConflictResolver()));
}
- String concat = "";
- for (int i = 1; i <= clsInfo.size(); i++) {
- concat = concat + "." + clsInfo.get(clsInfo.size() - i);
+ pkg.append(EMPTY_STRING);
+ int size = clsInfo.size();
+ for (int i = size - 1; i >= 0; i--) {
+ pkg.append(PERIOD).append(clsInfo.get(i));
}
- pkg.append(concat);
return pkg.toString().toLowerCase();
-
}
/**
* Returns augment class name.
*
- * @param augment YANG augment
- * @param yangPluginConfig plugin configurations
+ * @param augment YANG augment
+ * @param config plugin configurations
* @return augment class name
*/
- private static String getAugmentClassName(YangAugment augment, YangPluginConfig yangPluginConfig) {
- YangNodeIdentifier yangNodeIdentifier = augment.getTargetNode().get(augment.getTargetNode().size() - 1)
- .getNodeIdentifier();
- String name = getCapitalCase(getCamelCase(yangNodeIdentifier.getName(), yangPluginConfig
- .getConflictResolver()));
- if (yangNodeIdentifier.getPrefix() != null) {
- return AUGMENTED + getCapitalCase(getCamelCase(yangNodeIdentifier.getPrefix(), yangPluginConfig
- .getConflictResolver())) + name;
- } else {
- return AUGMENTED + name;
+ private static String getAugmentClassName(YangAugment augment,
+ YangPluginConfig config) {
+ YangNodeIdentifier identifier =
+ augment.getTargetNode().get(augment.getTargetNode().size() - 1)
+ .getNodeIdentifier();
+ String name = getCapitalCase(getCamelCase(identifier.getName(),
+ config.getConflictResolver()));
+ if (identifier.getPrefix() != null) {
+ return AUGMENTED + getCapitalCase(
+ getCamelCase(identifier.getPrefix(),
+ config.getConflictResolver())) + name;
}
+ return AUGMENTED + name;
}
-
}