Skip to content

Commit

Permalink
update list augment
Browse files Browse the repository at this point in the history
  • Loading branch information
airlenet committed Nov 28, 2020
1 parent fff08de commit 492c50f
Show file tree
Hide file tree
Showing 42 changed files with 132 additions and 14,147 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import com.tailf.jnc.YangElement;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static com.airlenet.yang.compiler.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
Expand Down Expand Up @@ -58,7 +59,7 @@ public YangJavaContainerTranslator() {
setJavaFileInfo(new JavaFileInfoTranslator());
getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
}

List<YangLeaf> allAugmentLeafList = new ArrayList<>();
/**
* Returns the generated java file information.
*
Expand Down Expand Up @@ -138,6 +139,17 @@ public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorExce
}
}

for (YangNode yangAugment : getAugmentedInfoList()) {

List<YangLeaf> augmentListOfLeaf = ((YangJavaAugmentTranslator) yangAugment).getListOfLeaf();
allAugmentLeafList.addAll(augmentListOfLeaf);
for (YangLeaf yangLeaf : augmentListOfLeaf) {
if (yangLeaf.getDataType().getDataType() == YangDataTypes.DERIVED || yangLeaf.getDataType().getDataType() == YangDataTypes.UNION|| yangLeaf.getDataType().getDataType() == YangDataTypes.ENUMERATION) {
((YangJavaLeafTranslator) yangLeaf).updateJavaQualifiedInfo();
((YangJavaTypeTranslator) yangLeaf.getDataType()).updateJavaQualifiedInfo(yangPlugin.getConflictResolver());
}
}
}
YangNode child = getChild();
while (child != null) {

Expand Down Expand Up @@ -225,6 +237,11 @@ public void generateCodeExit() throws TranslatorException {

JNCCodeUtil.yangLeafMethod(javaClass, yangJavaModule, yangLeaf);

}
for (YangLeaf yangLeaf : allAugmentLeafList) {

JNCCodeUtil.yangLeafMethod(javaClass, yangJavaModule, yangLeaf);

}
for (YangLeafList yangLeafList : this.getListOfLeafList()) {
JNCCodeUtil.yangLeafListMethod(javaClass, yangJavaModule, yangLeafList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,17 @@
import com.airlenet.yang.compiler.datamodel.javadatamodel.*;
import com.airlenet.yang.compiler.datamodel.utils.builtindatatype.YangDataTypes;
import com.airlenet.yang.compiler.translator.exception.TranslatorException;
import com.airlenet.yang.compiler.translator.tojava.JavaCodeGenerator;
import com.airlenet.yang.compiler.translator.tojava.JavaCodeGeneratorInfo;
import com.airlenet.yang.compiler.translator.tojava.JavaFileInfoTranslator;
import com.airlenet.yang.compiler.translator.tojava.TempJavaCodeFragmentFiles;
import com.airlenet.yang.compiler.translator.tojava.*;
import com.airlenet.yang.compiler.translator.tojava.jnc.JNCCodeUtil;
import com.airlenet.yang.compiler.translator.tojava.jnc.JavaClass;
import com.airlenet.yang.compiler.translator.tojava.jnc.JavaField;
import com.airlenet.yang.compiler.translator.tojava.jnc.JavaMethod;
import com.airlenet.yang.compiler.utils.io.YangPluginConfig;
import com.tailf.jnc.JNCException;
import com.tailf.jnc.YangElement;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import static com.airlenet.yang.compiler.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
Expand All @@ -50,7 +50,7 @@ public class YangJavaListTranslator
* snippet types.
*/
private transient TempJavaCodeFragmentFiles tempFileHandle;

List<YangLeaf> allAugmentLeafList = new ArrayList<>();
/**
* Creates YANG java list object.
*/
Expand Down Expand Up @@ -140,7 +140,17 @@ public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorExce
((YangJavaLeafListTranslator) yangLeaf).updateJavaQualifiedInfo();
}
}

for (YangNode yangAugment : getAugmentedInfoList()) {

List<YangLeaf> augmentListOfLeaf = ((YangJavaAugmentTranslator) yangAugment).getListOfLeaf();
allAugmentLeafList.addAll(augmentListOfLeaf);
for (YangLeaf yangLeaf : augmentListOfLeaf) {
if (yangLeaf.getDataType().getDataType() == YangDataTypes.DERIVED || yangLeaf.getDataType().getDataType() == YangDataTypes.UNION|| yangLeaf.getDataType().getDataType() == YangDataTypes.ENUMERATION) {
((YangJavaLeafTranslator) yangLeaf).updateJavaQualifiedInfo();
((YangJavaTypeTranslator) yangLeaf.getDataType()).updateJavaQualifiedInfo(yangPlugin.getConflictResolver());
}
}
}
YangNode child = getChild();
while (child != null) {

Expand All @@ -157,6 +167,21 @@ public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorExce
}
child = child.getNextSibling();
}
List<YangAugment> yangAugmentList = getAugmentedInfoList();

for (YangAugment yangAugment:yangAugmentList){
YangNode augmentedNode = yangAugment.getChild();
if(augmentedNode!=null)
{
if(augmentedNode instanceof YangJavaUsesTranslator){
augmentedNode = augmentedNode.getNextSibling();
}
// if(augmentedNode.getFileName().endsWith("tailf-acm.yang")){
// System.err.println( "==========================="+augmentedNode.getClass());
// }
((JavaCodeGenerator)augmentedNode).generatePackageInfo(yangPlugin);
}
}
// while (child!=null){
// if (child.getDataType().getDataType() == YangDataTypes.DERIVED || child.getDataType().getDataType() == YangDataTypes.UNION) {
// ((YangJavaLeafListTranslator) child).updateJavaQualifiedInfo();
Expand Down Expand Up @@ -284,6 +309,11 @@ public void generateCodeExit() throws TranslatorException {
for (YangLeaf yangLeaf : listOfLeaf) {
JNCCodeUtil.yangLeafMethod(javaClass, yangJavaModule, yangLeaf);
}
for (YangLeaf yangLeaf : allAugmentLeafList) {

JNCCodeUtil.yangLeafMethod(javaClass, yangJavaModule, yangLeaf);

}
for (YangLeafList yangLeafList : this.getListOfLeafList()) {
JNCCodeUtil.yangLeafListMethod(javaClass, yangJavaModule, yangLeafList);
}
Expand Down Expand Up @@ -317,6 +347,33 @@ public void generateCodeExit() throws TranslatorException {
child = child.getNextSibling();
}
}
for (YangAugment yangAugment:getAugmentedInfoList()){
YangNode augmentedNode = yangAugment.getChild();
if(augmentedNode==null){
continue;
}
if(augmentedNode instanceof YangJavaUsesTranslator){
augmentedNode = augmentedNode.getNextSibling();
}
JavaFileInfoTranslator augmentFileInfoTranslator = ((JavaFileInfoContainer) augmentedNode).getJavaFileInfo();


String filedName= YangElement.camelize(augmentedNode.getName());
String augmentClassname = YangElement.normalize(augmentedNode.getName());

javaClass.addDependency( augmentFileInfoTranslator.getPackage()+"."+augmentClassname);

javaClass.addField(new JavaField(augmentClassname ,filedName,"null","public").setJavadoc("See line "+augmentedNode.getLineNumber()+" in\n" +
""+((JavaFileInfoContainer) augmentedNode).getJavaFileInfo().getYangFileName()));
javaClass.addMethod(new JavaMethod("get"+augmentClassname,augmentClassname).setModifiers("public").addLine("return this."+filedName+";"));
javaClass.addMethod(new JavaMethod("add"+augmentClassname,augmentClassname).setModifiers("public").addParameter(augmentClassname,filedName).setExceptions(JNCException.class.getName())
.addLine(" this."+ filedName+ " = "+filedName+";").addLine("this.insertChild("+filedName+", this.childrenNames());").addLine("return this."+filedName+";"));
javaClass.addMethod(new JavaMethod("add"+augmentClassname,augmentClassname).setModifiers("public").setExceptions(JNCException.class.getName()).addLine(augmentClassname+" "+filedName+ " = new "+augmentClassname+"();")
.addLine(" this."+ filedName+ " = "+filedName+";").addLine("this.insertChild("+filedName+", this.childrenNames());").addLine("return this."+filedName+";"));

javaClass.addMethod(new JavaMethod("delete"+augmentClassname,"void").setModifiers("public").setExceptions(JNCException.class.getName())
.addLine("this."+ filedName+ " = null;").addLine("String path=\""+augmentedNode.getName()+"\";").addLine("this.delete(path);"));
}
// public com.tailf.jnc.YangUInt32 getIdValue() throws JNCException {
// return (com.tailf.jnc.YangUInt32)getValue("id");
// }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,13 @@ public void setTempJavaCodeFragmentFiles(TempJavaCodeFragmentFiles fileHandle) {
tempFileHandle = fileHandle;
}

@Override
public void generatePackageInfo(YangPluginConfig yangPlugin) {
if(this.getParent()!=null){
((JavaCodeGenerator)this.getParent()).generatePackageInfo(yangPlugin);
}
updateJNCPackageInfo(this, yangPlugin);
}
/**
* Prepare the information for java code generation corresponding to YANG
* union info.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package com.airlenet.yang.compiler.translator.tojava.jnc;


import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class JavaField {
private String[] modifiers;
private String type;
private String name;
private String value;
private List<String> imports;
private String javadoc;
public JavaField(String type,String name, String value, String... modifiers) {
this.type = type;
this.name = name;
Expand All @@ -19,10 +22,16 @@ public JavaField(String type,String name, String value, String... modifiers) {
public List<String> getImports() {
return imports;
}

public JavaField setJavadoc(String javadoc) {
this.javadoc=(javadoc);
return this;
}
public String toJavaCode() {
StringBuilder builder = new StringBuilder();
builder.append("\t");
if(this.javadoc!=null){
builder.append("\t/**").append("\n\t * ").append(Arrays.stream(this.javadoc.split("\n")).map(l->l.trim()).collect(Collectors.joining("\n\t * "))).append("\n\t */");
}
builder.append("\n\t");
if (this.modifiers != null) {
for (String modifier : modifiers) {
builder.append(modifier);
Expand Down
3 changes: 3 additions & 0 deletions yang-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@
<configuration>
<yangFilesDir>src/main/yang</yangFilesDir>
<packageName>com.test.yang.model.gen</packageName>
<excludes>
<exclude>**anno.yang</exclude>
</excludes>
<!-- <classFileDir>src/main/java</classFileDir>-->
</configuration>
<executions>
Expand Down
83 changes: 0 additions & 83 deletions yang-example/src/main/yang/demo.yang

This file was deleted.

4 changes: 0 additions & 4 deletions yang-example/src/main/yang/empty.yang

This file was deleted.

Loading

0 comments on commit 492c50f

Please sign in to comment.