multiFileYangTranslator
Change-Id: I2adfef3acaec4bd74ba2c487404d2c655b800988
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
index 1f138ea..7a7c96a 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
@@ -17,27 +17,31 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
import java.io.IOException;
-import org.onosproject.yangutils.datamodel.HasRpcNotification;
+
+import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangInput;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangOutput;
import org.onosproject.yangutils.datamodel.YangRpc;
import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
-import org.onosproject.yangutils.translator.tojava.HasTempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig;
-import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getCurNodeAsAttributeInParent;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_RPC_INTERFACE;
+import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInParent;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getParentNodeInGenCode;
import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.updatePackageInfo;
/**
* Represents rpc information extended to support java code generation.
*/
-public class YangJavaRpc extends YangRpc implements JavaCodeGenerator, HasJavaFileInfo {
+public class YangJavaRpc
+ extends YangRpc
+ implements JavaCodeGenerator, JavaCodeGeneratorInfo {
/**
* Contains the information of the java file being generated.
@@ -45,35 +49,57 @@
private JavaFileInfo javaFileInfo;
/**
+ * Temproary file for code generation.
+ */
+ private TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles;
+
+ /**
* Creates an instance of YANG java rpc.
*/
public YangJavaRpc() {
super();
setJavaFileInfo(new JavaFileInfo());
+ getJavaFileInfo().setGeneratedFileTypes(GENERATE_RPC_INTERFACE);
+ try {
+ setTempJavaCodeFragmentFiles(new TempJavaCodeFragmentFiles(getJavaFileInfo()));
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to create temporary RPC file handle");
+ }
}
/**
* Prepares the information for java code generation corresponding to YANG
- * rpc info.
+ * RPC info.
*
* @param yangPlugin YANG plugin config
* @throws IOException IO operations fails
*/
@Override
- public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException {
+ public void generateCodeEntry(YangPluginConfig yangPlugin)
+ throws IOException {
- if (!(this instanceof YangNode)) {
+ if (!(this instanceof JavaCodeGeneratorInfo)) {
// TODO:throw exception
}
// Add package information for rpc and create corresponding folder.
- updatePackageInfo(this, yangPlugin);
+ updatePackageInfo((JavaCodeGeneratorInfo) this, yangPlugin);
+ }
+
+ /**
+ * Creates a java file using the YANG RPC info.
+ *
+ * @throws IOException IO operations fails
+ */
+ @Override
+ public void generateCodeExit()
+ throws IOException {
// Get the parent module/sub-module.
YangNode parent = getParentNodeInGenCode((YangNode) this);
// Parent should be holder of rpc or notification.
- if (!(parent instanceof HasRpcNotification)) {
+ if (!(parent instanceof RpcNotificationContainer)) {
throw new TranslatorException("parent node of rpc can only be module or sub-module");
}
@@ -89,35 +115,26 @@
YangNode yangNode = this.getChild();
while (yangNode != null) {
if (yangNode instanceof YangInput) {
- javaAttributeInfoOfInput = getCurNodeAsAttributeInParent(parent, false, yangNode.getName());
+ javaAttributeInfoOfInput = getCurNodeAsAttributeInParent(yangNode, this, false);
} else if (yangNode instanceof YangOutput) {
- javaAttributeInfoOfOutput = getCurNodeAsAttributeInParent(parent, false, yangNode.getName());
+ javaAttributeInfoOfOutput = getCurNodeAsAttributeInParent(yangNode, this, false);
} else {
// TODO throw exception
}
yangNode = yangNode.getNextSibling();
}
- if (!(parent instanceof HasTempJavaCodeFragmentFiles)) {
+ if (!(parent instanceof TempJavaCodeFragmentFilesContainer)) {
throw new TranslatorException("missing parent temp file handle");
}
/*
* Add the rpc information to the parent's service temp file.
*/
- ((HasTempJavaCodeFragmentFiles) parent)
- .getTempJavaCodeFragmentFiles()
+ ((TempJavaCodeFragmentFilesContainer) parent)
+ .getTempJavaCodeFragmentFiles().getServiceTempFiles()
.addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfoOfInput, javaAttributeInfoOfOutput,
((YangNode) this).getName());
- }
-
- /**
- * Creates a java file using the YANG rpc info.
- *
- * @throws IOException IO operations fails
- */
- @Override
- public void generateCodeExit() throws IOException {
// No file will be generated during RPC exit.
}
@@ -144,5 +161,15 @@
public void setJavaFileInfo(JavaFileInfo javaInfo) {
javaFileInfo = javaInfo;
}
+
+ @Override
+ public TempJavaCodeFragmentFiles getTempJavaCodeFragmentFiles() {
+ return tempJavaCodeFragmentFiles;
+ }
+
+ @Override
+ public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
+ tempJavaCodeFragmentFiles = fileHandle;
+ }
}