[ONOS-5232] bits enum class generation modifications and code refactoring.
Change-Id: I67fb31c586802e9cf682aa6e707475ad8fdc096f
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index cfe507b..de75bbf 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -16,28 +16,21 @@
package org.onosproject.yangutils.translator.tojava;
-import java.io.Serializable;
-import java.util.Objects;
-
+import com.google.common.base.MoreObjects;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.javamodel
- .AttributesJavaDataType;
-import org.onosproject.yangutils.translator.tojava.javamodel
- .JavaLeafInfoContainer;
+import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
+import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
-import com.google.common.base.MoreObjects;
+import java.io.Serializable;
+import java.util.Objects;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportClass;
+import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.getJavaImportPackage;
import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype
- .YangDataTypes.BINARY;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS;
-import static org.onosproject.yangutils.translator.tojava.javamodel
- .AttributesJavaDataType.getJavaImportClass;
-import static org.onosproject.yangutils.translator.tojava.javamodel
- .AttributesJavaDataType.getJavaImportPackage;
import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
/**
@@ -47,6 +40,7 @@
extends JavaQualifiedTypeInfo
implements Comparable<JavaQualifiedTypeInfoTranslator>, Serializable {
private static final long serialVersionUID = 806201634L;
+ private boolean isQualified;
/**
* Creates a java qualified type info object.
@@ -276,4 +270,22 @@
public int compareTo(JavaQualifiedTypeInfoTranslator other) {
return getClassInfo().compareTo(other.getClassInfo());
}
+
+ /**
+ * Returns true if import is qualified.
+ *
+ * @return true if import is qualified
+ */
+ public boolean isQualified() {
+ return isQualified;
+ }
+
+ /**
+ * Sets true if import is qualified.
+ *
+ * @param qualified true if import is qualified
+ */
+ public void setQualified(boolean qualified) {
+ isQualified = qualified;
+ }
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
index 7f15bc3..5f6b3bb 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaBeanFragmentFiles.java
@@ -114,4 +114,5 @@
closeFile(constructorImplTempFileHandle, true);
super.freeTemporaryResources(isErrorOccurred);
}
+
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 0e1c132..4b8ca9c 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -20,6 +20,7 @@
import org.onosproject.yangutils.datamodel.YangAugmentableNode;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
+import org.onosproject.yangutils.datamodel.YangGrouping;
import org.onosproject.yangutils.datamodel.YangLeaf;
import org.onosproject.yangutils.datamodel.YangLeafList;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
@@ -32,7 +33,6 @@
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGroupingTranslator;
-import org.onosproject.yangutils.translator.tojava.utils.BitsJavaInfoHandler;
import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
@@ -68,6 +68,7 @@
import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedInfoOfFromString;
import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateBitsFile;
import static org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType.updateJavaFileInfo;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.generateEnumAttributeString;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getJavaAttributeDefinition;
@@ -91,7 +92,9 @@
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.StringGenerator.getChoiceChildNodes;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getNodesImports;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOverRideString;
import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getSubtreeFilteringForLeaf;
import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getSubtreeFilteringForLeafList;
@@ -105,6 +108,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST_IMPORT;
import static org.onosproject.yangutils.utils.UtilConstants.AUGMENT_MAP_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
@@ -124,6 +128,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERED;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.YANG;
import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
@@ -266,11 +271,20 @@
private static final String BUILDER_CLASS_FILE_NAME_SUFFIX = BUILDER;
/**
- *
+ * if type is binary.
*/
private boolean isBinary;
/**
+ * Current attributes YANG node
+ */
+ private YangNode attrNode;
+
+ /**
+ * Sub tree filtering requires child class imports for type cast.
+ */
+ private final List<JavaQualifiedTypeInfoTranslator> subTreeImports = new ArrayList<>();
+ /**
* Information about the java files being generated.
*/
private JavaFileInfoTranslator javaFileInfo;
@@ -413,11 +427,6 @@
private boolean isAttributePresent;
/**
- * List of bits attributes.
- */
- private List<BitsJavaInfoHandler> bitsHandler = new ArrayList<>();
-
- /**
* Creates an instance of temp JAVA fragment files.
*/
TempJavaFragmentFiles() {
@@ -598,6 +607,14 @@
throws IOException {
TempJavaBeanFragmentFiles tempFiles =
getBeanFiles((JavaCodeGeneratorInfo) parent);
+ if (curNode instanceof YangChoice) {
+ tempFiles.setAttrNode(curNode);
+ for (JavaQualifiedTypeInfoTranslator info : getNodesImports(
+ getChoiceChildNodes((YangChoice) curNode), config))
+ tempFiles.addToSubTreeImports(info);
+ } else {
+ tempFiles.setAttrNode(null);
+ }
JavaAttributeInfo attr =
getCurNodeAsAttributeInTarget(curNode, parent, isList,
tempFiles);
@@ -656,6 +673,11 @@
}
qualified = parentImportData.addImportInfo(typeInfo, className,
fileInfo.getPackage());
+ if (!qualified && !(curNode instanceof YangChoice)) {
+ addChildDefaultClassImportForSubTreeFilter(typeInfo.getPkgInfo(),
+ typeInfo.getClassInfo(),
+ tempFiles);
+ }
}
boolean collectionSet = false;
if (curNode instanceof YangList) {
@@ -694,6 +716,16 @@
qualified, listNode);
}
+ private static void addChildDefaultClassImportForSubTreeFilter(
+ String pkg, String className, TempJavaFragmentFiles tempFile) {
+ className = DEFAULT_CAPS + getCapitalCase(className);
+ JavaQualifiedTypeInfoTranslator info = new
+ JavaQualifiedTypeInfoTranslator();
+ info.setClassInfo(className);
+ info.setPkgInfo(pkg);
+ tempFile.subTreeImports.add(info);
+ }
+
/**
* Returns java attribute for leaf.
*
@@ -706,7 +738,7 @@
private static JavaAttributeInfo
getJavaAttributeOfLeaf(TempJavaFragmentFiles tempFiles,
JavaLeafInfoContainer container,
- YangPluginConfig config, boolean leafList) {
+ YangPluginConfig config, boolean leafList) throws IOException {
if (leafList) {
tempFiles.getJavaImportData().setIfListImported(true);
return getAttributeOfLeafInfoContainer(tempFiles, container, config,
@@ -729,7 +761,7 @@
getAttributeOfLeafInfoContainer(TempJavaFragmentFiles tempFiles,
JavaLeafInfoContainer container,
YangPluginConfig config,
- boolean listAttribute) {
+ boolean listAttribute) throws IOException {
container.setConflictResolveConfig(config.getConflictResolver());
container.updateJavaQualifiedInfo();
addImportForLeafInfo(tempFiles, container);
@@ -739,7 +771,16 @@
container.getDataType(),
tempFiles.getIsQualifiedAccessOrAddToImportList(
container.getJavaQualifiedInfo()), listAttribute);
- if (container.getDataType().getDataType() == YangDataTypes.BITS) {
+ boolean isInGrouping;
+ if (container.isLeafList()) {
+ isInGrouping = !(((YangLeafList) container).getContainedIn()
+ instanceof YangGrouping);
+ } else {
+ isInGrouping = !(((YangLeaf) container).getContainedIn()
+ instanceof YangGrouping);
+ }
+ if (container.getDataType().getDataType() == YangDataTypes.BITS &&
+ isInGrouping) {
addBitsHandler(attr, container.getDataType(), tempFiles);
}
return attr;
@@ -753,10 +794,9 @@
* @param tempFiles temp fragment file
*/
static void addBitsHandler(JavaAttributeInfo attr, YangType type,
- TempJavaFragmentFiles tempFiles) {
- BitsJavaInfoHandler handler
- = new BitsJavaInfoHandler(attr, type);
- tempFiles.getBitsHandler().add(handler);
+ TempJavaFragmentFiles tempFiles)
+ throws IOException {
+ generateBitsFile(attr, type, tempFiles.getJavaFileInfo(), tempFiles);
}
/**
@@ -1012,7 +1052,7 @@
private void addSubtreeFilteringForChildNode(JavaAttributeInfo attr)
throws IOException {
appendToFile(getSubtreeFilteringForChildNodeTempFileHandle,
- getSubtreeFilteringForNode(attr) + NEW_LINE);
+ getSubtreeFilteringForNode(attr, attrNode) + NEW_LINE);
}
/**
@@ -1049,8 +1089,7 @@
throws IOException {
appendToFile(setterInterfaceTempFileHandle,
getSetterString(attr, getGeneratedJavaClassName(),
- getGeneratedJavaFiles()) +
- NEW_LINE);
+ getGeneratedJavaFiles()) + NEW_LINE);
}
/**
@@ -1227,14 +1266,13 @@
*
* @param attr type attribute info
* @param fromStringAttr from string attribute info
- * @param genClassName generated class name
* @throws IOException when fails to append to temporary file
*/
void addFromStringMethod(JavaAttributeInfo attr,
- JavaAttributeInfo fromStringAttr, String genClassName)
+ JavaAttributeInfo fromStringAttr)
throws IOException {
appendToFile(fromStringImplTempFileHandle,
- getFromStringMethod(attr, fromStringAttr, genClassName) + NEW_LINE);
+ getFromStringMethod(attr, fromStringAttr) + NEW_LINE);
}
/**
@@ -1526,6 +1564,23 @@
}
/**
+ * Adds sub tree filtering to temp files.
+ *
+ * @param config YANG plugin config
+ * @throws IOException IO exception
+ */
+ protected void addIsSubTreeFilteredFlag(YangPluginConfig config)
+ throws IOException {
+ JavaQualifiedTypeInfoTranslator typeInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ typeInfo.setClassInfo(BOOLEAN_DATA_TYPE);
+ typeInfo.setPkgInfo(null);
+ JavaAttributeInfo attributeInfo =
+ getAttributeInfoForTheData(typeInfo, SUBTREE_FILTERED, null, false, false);
+ addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
+ }
+
+ /**
* Adds value leaf flag to temp files.
*
* @param config YANG plugin config
@@ -1556,9 +1611,17 @@
throws IOException {
isAttributePresent = true;
String attrName = newAttrInfo.getAttributeName();
+ //Boolean flag for operation type attr info generation control.
boolean required = !attrName.equals(VALUE_LEAF) &&
!attrName.equals(SELECT_LEAF) &&
!attrName.equals(YANG_AUGMENTED_INFO_MAP);
+ //Boolean flag for subtree for nodes info generation control.
+ boolean subTreeForChild =
+ tempFlagSet(FILTER_CONTENT_MATCH_FOR_NODES_MASK) &&
+ newAttrInfo.getAttributeType() == null &&
+ !attrName.contains(OPERATION_TYPE_ATTRIBUTE) &&
+ required && !attrName.equals(SUBTREE_FILTERED);
+ ;
if (tempFlagSet(ATTRIBUTES_MASK)) {
addAttribute(newAttrInfo);
}
@@ -1591,9 +1654,7 @@
addAddToListInterface(newAttrInfo);
}
YangType attrType = newAttrInfo.getAttributeType();
- if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_NODES_MASK) &&
- attrType == null && !attrName
- .contains(OPERATION_TYPE_ATTRIBUTE) && required) {
+ if (subTreeForChild) {
addSubtreeFilteringForChildNode(newAttrInfo);
}
if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_MASK) &&
@@ -1627,8 +1688,7 @@
typeInfo, newAttrInfo.getAttributeName(),
attrType, getIsQualifiedAccessOrAddToImportList(
typeInfo), false);
- addFromStringMethod(newAttrInfo, fromStringAttributeInfo,
- getGeneratedJavaClassName());
+ addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
}
}
}
@@ -1716,7 +1776,10 @@
}
}
- if (!curNode.isOpTypeReq() && curNode instanceof YangCase) {
+ if (curNode.isOpTypeReq()) {
+ addSubTreeImportStrings(imports);
+ }
+ if (curNode instanceof YangCase) {
removeCaseParentImport(curNode, imports);
}
@@ -2030,15 +2093,6 @@
}
/**
- * Returns list of bits attributes.
- *
- * @return list of bits attributes
- */
- public List<BitsJavaInfoHandler> getBitsHandler() {
- return bitsHandler;
- }
-
- /**
* Sets true if binary type is there for leaf/leaf-list.
*
* @param binary true if binary type is there for leaf/leaf-list
@@ -2056,4 +2110,37 @@
return isBinary;
}
+ /**
+ * Sets attribute's node.
+ *
+ * @param attrNode attribute's node
+ */
+ public void setAttrNode(YangNode attrNode) {
+ this.attrNode = attrNode;
+ }
+
+ /**
+ * Adds info to sub tree import list.
+ *
+ * @param info import info
+ */
+ public void addToSubTreeImports(JavaQualifiedTypeInfoTranslator
+ info) {
+ boolean isAdded = false;
+ for (JavaQualifiedTypeInfoTranslator imports : subTreeImports) {
+ if (imports.getClassInfo().equals(info.getClassInfo())) {
+ isAdded = true;
+ }
+ }
+ if (!isAdded) {
+ subTreeImports.add(info);
+ }
+ }
+
+ private void addSubTreeImportStrings(List<String> imports) {
+ for (JavaQualifiedTypeInfoTranslator impt : subTreeImports) {
+ imports.add(getImportString(impt.getPkgInfo(), impt.getClassInfo()));
+ }
+ sortImports(imports);
+ }
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
index 474594d..0cb63e1 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaServiceFragmentFiles.java
@@ -40,6 +40,9 @@
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcServiceMethod;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
+import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
+import static org.onosproject.yangutils.utils.UtilConstants.OUTPUT;
import static org.onosproject.yangutils.utils.UtilConstants.Operation.ADD;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.SERVICE;
@@ -47,6 +50,7 @@
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.generateJavaDocForRpc;
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;
/**
@@ -148,11 +152,18 @@
*/
private void addRpcString(JavaAttributeInfo inAttr, JavaAttributeInfo outAttr,
String rpcName) throws IOException {
- String rpcInput = inAttr == null ? null :
- getCapitalCase(inAttr.getAttributeName());
- String rpcOutput = outAttr == null ? VOID :
- getCapitalCase(outAttr.getAttributeName());
- String rpcIn = rpcInput == null ? EMPTY_STRING : RPC_INPUT_VAR_NAME;
+ String rpcInput = null;
+ String rpcOutput = VOID;
+ String rpcIn = EMPTY_STRING;
+ if (inAttr != null) {
+ rpcInput = getCapitalCase(inAttr.getAttributeName());
+ }
+ if (outAttr != null) {
+ rpcOutput = getCapitalCase(outAttr.getAttributeName());
+ }
+ if (rpcInput != null) {
+ rpcIn = RPC_INPUT_VAR_NAME;
+ }
appendToFile(rpcInterfaceTempFileHandle,
generateJavaDocForRpc(rpcName, rpcIn, rpcOutput) +
getRpcServiceMethod(rpcName, rpcInput, rpcOutput));
@@ -180,14 +191,24 @@
* @param childNode child data model node(input / output) for which the java code generation
* is being handled
* @param parentNode parent node (module / sub-module) in which the child node is an attribute
+ * @param rpcName rpc name
* @return AttributeInfo attribute details required to add in temporary
* files
*/
public JavaAttributeInfo getChildNodeAsAttributeInParentService(
- YangNode childNode, YangNode parentNode) {
+ YangNode childNode, YangNode parentNode, String rpcName) {
- String childNodeName = ((JavaFileInfoContainer) childNode)
- .getJavaFileInfo().getJavaName();
+ JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) childNode)
+ .getJavaFileInfo();
+ String childNodeName = fileInfo.getJavaName();
+ if (childNodeName == null) {
+ if (childNode instanceof YangInput) {
+ childNodeName = rpcName + HYPHEN + INPUT;
+ } else {
+ childNodeName = rpcName + HYPHEN + OUTPUT;
+ }
+ childNodeName = getCamelCase(childNodeName, null);
+ }
/*
* Get the import info corresponding to the attribute for import in
* generated java files or qualified access
@@ -237,30 +258,41 @@
JavaAttributeInfo out = null;
YangNode rpcChild;
YangRpc rpc;
+ String rpcName;
YangInput input;
+
for (YangAugment info : module.getAugmentList()) {
input = (YangInput) info.getAugmentedNode();
if (input != null) {
rpc = (YangRpc) input.getParent();
- rpcChild = rpc.getChild();
- while (rpcChild != null) {
- if (rpcChild instanceof YangInput) {
- in = getChildNodeAsAttributeInParentService(
- rpcChild, (YangNode) module);
+ if (!validateForIntraFile(module, (RpcNotificationContainer) rpc
+ .getParent())) {
+ rpcChild = rpc.getChild();
+
+ rpcName = getCamelCase(rpc.getName(), null);
+ while (rpcChild != null) {
+ if (rpcChild instanceof YangInput) {
+ in = getChildNodeAsAttributeInParentService(
+ rpcChild, (YangNode) module, rpcName);
+ }
+ if (rpcChild instanceof YangOutput) {
+ out = getChildNodeAsAttributeInParentService(
+ rpcChild, (YangNode) module, rpcName);
+ }
+ rpcChild = rpcChild.getNextSibling();
}
- if (rpcChild instanceof YangOutput) {
- out = getChildNodeAsAttributeInParentService(
- rpcChild, (YangNode) module);
- }
- rpcChild = rpcChild.getChild();
+ addJavaSnippetInfoToApplicableTempFiles(in, out, rpcName);
}
- addJavaSnippetInfoToApplicableTempFiles(in, out, rpc
- .getJavaClassNameOrBuiltInType());
}
}
}
+ private boolean validateForIntraFile(RpcNotificationContainer parent,
+ RpcNotificationContainer curModule) {
+ return parent.getPrefix().equals(curModule.getPrefix());
+ }
+
/**
* Removes all temporary file handles.
*
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 431cf19..b0145a8 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -474,7 +474,7 @@
newAttrInfo.getAttributeType(),
getIsQualifiedAccessOrAddToImportList(qualifiedInfoOfFromString), false);
- addFromStringMethod(newAttrInfo, fromStringAttributeInfo, getGeneratedJavaClassName());
+ addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
}
/**
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 0a433ee..ab1c8f4 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -19,16 +19,21 @@
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
+import org.onosproject.yangutils.datamodel.YangBit;
+import org.onosproject.yangutils.datamodel.YangBits;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
+import org.onosproject.yangutils.datamodel.YangEnum;
+import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangGrouping;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
import org.onosproject.yangutils.datamodel.YangSchemaNode;
import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
+import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
-import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugmentTranslator;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumerationTranslator;
@@ -37,19 +42,21 @@
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaOutputTranslator;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import org.slf4j.Logger;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_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.IndentationType.FOUR_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateInterfaceFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose;
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;
@@ -57,7 +64,7 @@
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.CLOSE_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
import static org.onosproject.yangutils.utils.UtilConstants.INPUT_KEYWORD;
import static org.onosproject.yangutils.utils.UtilConstants.OUTPUT_KEYWORD;
@@ -69,12 +76,15 @@
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.insertDataIntoJavaFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
+import static org.slf4j.LoggerFactory.getLogger;
/**
* Represents utility class for YANG java model.
*/
public final class YangJavaModelUtils {
+ private static final Logger LOG = getLogger(YangJavaModelUtils.class);
+
// No instantiation.
private YangJavaModelUtils() {
}
@@ -207,7 +217,8 @@
private static void createTempFragmentFile(JavaCodeGeneratorInfo info)
throws IOException {
info.setTempJavaCodeFragmentFiles(
- new TempJavaCodeFragmentFiles(info.getJavaFileInfo()));
+ new TempJavaCodeFragmentFiles(info.getJavaFileInfo()
+ ));
}
/**
@@ -226,21 +237,15 @@
if (info instanceof RpcNotificationContainer) {
getBeanFiles(info).setRootNode(true);
/*
- * Module / sub module node code generation.
+ * event classes code generation.
*/
- if (info instanceof YangJavaModuleTranslator) {
- if (!((YangJavaModuleTranslator) info).getNotificationNodes()
- .isEmpty()) {
- updateNotificationNodeInfo(info, config);
- }
- } else if (info instanceof YangJavaSubModuleTranslator) {
- if (!((YangJavaSubModuleTranslator) info).getNotificationNodes()
- .isEmpty()) {
- updateNotificationNodeInfo(info, config);
- }
- }
+ updateNotificationNodeInfo(info, config);
}
if (info instanceof YangLeavesHolder) {
+ if (info instanceof YangAugment) {
+ getBeanFiles(info).addIsSubTreeFilteredFlag(config);
+ }
+
YangLeavesHolder holder = (YangLeavesHolder) info;
boolean isLeafPresent = holder.getListOfLeaf() != null && !holder
.getListOfLeaf().isEmpty();
@@ -321,21 +326,11 @@
private static void updateNotificationNodeInfo(JavaCodeGeneratorInfo info,
YangPluginConfig config)
throws IOException {
- TempJavaCodeFragmentFiles translator =
- info.getTempJavaCodeFragmentFiles();
- if (info instanceof YangJavaModuleTranslator) {
- for (YangNode notification : ((YangJavaModuleTranslator) info)
- .getNotificationNodes()) {
- translator.getEventFragmentFiles()
- .addJavaSnippetOfEvent(notification, config);
- }
- }
- if (info instanceof YangJavaSubModuleTranslator) {
- for (YangNode notification : ((YangJavaSubModuleTranslator) info)
- .getNotificationNodes()) {
- translator.getEventFragmentFiles()
- .addJavaSnippetOfEvent(notification, config);
- }
+ TempJavaCodeFragmentFiles tempFile = info.getTempJavaCodeFragmentFiles();
+ for (YangNode notification :
+ ((RpcNotificationContainer) info).getNotificationNodes()) {
+ tempFile.getEventFragmentFiles()
+ .addJavaSnippetOfEvent(notification, config);
}
}
@@ -463,9 +458,8 @@
* @param config plugin configuration
* @return cases parent's qualified info
*/
- public static JavaQualifiedTypeInfoTranslator
- getQualifierInfoForCasesParent(YangNode parent,
- YangPluginConfig config) {
+ private static JavaQualifiedTypeInfoTranslator getQualifierInfoForCasesParent(
+ YangNode parent, YangPluginConfig config) {
String parentName;
String parentPkg;
JavaFileInfoTranslator parentInfo;
@@ -550,7 +544,7 @@
throw new TranslatorException(getErrorMsg(INVALID_NODE, curNode));
}
- YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
+ YangNode parentNode = getParentNodeInGenCode(curNode);
if (!(parentNode instanceof JavaFileInfoContainer)) {
throw new TranslatorException(getErrorMsg(INVALID_PARENT_NODE,
curNode));
@@ -635,6 +629,14 @@
YangPluginConfig config) {
List<String> clsInfo = new ArrayList<>();
+ String add = null;
+ if (node instanceof YangCase) {
+ YangNode parent = node.getParent();
+ if (parent instanceof YangAugment) {
+ add = getCamelCase(((YangAugment) parent)
+ .getAugmentedNode().getName(), null);
+ }
+ }
while (node.getParent() != null) {
if (node instanceof YangJavaAugmentTranslator) {
clsInfo.add(getAugmentClassName((YangAugment) node,
@@ -661,9 +663,13 @@
subModule.getRevision(),
config.getConflictResolver()));
}
- pkg.append(EMPTY_STRING);
+ if (add != null) {
+ clsInfo.add(add);
+ }
+ clsInfo.add(getCamelCase(node.getName(), config.getConflictResolver()));
+
int size = clsInfo.size();
- for (int i = size - 1; i >= 0; i--) {
+ for (int i = size - 1; i > 0; i--) {
pkg.append(PERIOD).append(clsInfo.get(i));
}
return pkg.toString().toLowerCase();
@@ -681,14 +687,15 @@
YangNodeIdentifier identifier =
augment.getTargetNode().get(augment.getTargetNode().size() - 1)
.getNodeIdentifier();
- String name = getCapitalCase(getCamelCase(identifier.getName(),
- config.getConflictResolver()));
+ String prefix = identifier.getPrefix();
+ String idName = identifier.getName();
+ StringBuilder name = new StringBuilder(AUGMENTED).append(HYPHEN);
if (identifier.getPrefix() != null) {
- return getCapitalCase(getCamelCase(AUGMENTED + HYPHEN + identifier
- .getPrefix(),
- config.getConflictResolver())) + name;
+ name.append(prefix).append(HYPHEN);
}
- return AUGMENTED + name;
+ name.append(idName);
+ return getCapitalCase(getCamelCase(name.toString(),
+ config.getConflictResolver()));
}
/**
@@ -709,6 +716,92 @@
}
}
+ private static void createAndAddEnum(String name, int value,
+ YangEnumeration enumeration) {
+ YangEnum yangEnum = new YangEnum();
+ yangEnum.setNamedValue(name);
+ yangEnum.setValue(value);
+ try {
+ enumeration.addEnumInfo(yangEnum);
+ } catch (DataModelException e) {
+ LOG.error("failed to add enum in bits enum class " + e);
+ }
+ }
+
+ /**
+ * Returns bits type enum file.
+ *
+ * @param attr attribute
+ * @param type data type
+ * @param fileInfo file info
+ * @param tempFile temp java fragment files
+ * @throws IOException when fails to do IO operations
+ */
+ static void generateBitsFile(
+ JavaAttributeInfo attr, YangType type,
+ JavaFileInfoTranslator fileInfo, TempJavaFragmentFiles tempFile) throws IOException {
+ String className = attr.getAttributeName();
+ JavaFileInfoTranslator attrInfo = new JavaFileInfoTranslator();
+ attrInfo.setJavaName(className);
+ attrInfo.setPackage((fileInfo.getPackage() + "." + fileInfo.getJavaName()
+ ).toLowerCase());
+ attrInfo.setBaseCodeGenPath(fileInfo.getBaseCodeGenPath());
+ attrInfo.setGeneratedFileTypes(GENERATE_ENUM_CLASS);
+ attrInfo.setPackageFilePath(fileInfo.getPackageFilePath() + File
+ .separator + fileInfo.getJavaName().toLowerCase());
+ attrInfo.setPluginConfig(fileInfo.getPluginConfig());
+ TempJavaCodeFragmentFiles codeFile = new TempJavaCodeFragmentFiles(
+ attrInfo);
+ YangJavaEnumerationTranslator enumeration = new YangJavaEnumerationTranslator() {
+ @Override
+ public String getJavaPackage() {
+ return attr.getImportInfo().getPkgInfo();
+ }
+
+ @Override
+ public String getJavaClassNameOrBuiltInType() {
+ return className;
+ }
+
+ @Override
+ public String getJavaAttributeName() {
+ return className;
+ }
+ };
+
+ enumeration.setName(getCapitalCase(className));
+ enumeration.setJavaFileInfo(attrInfo);
+ enumeration.setTempJavaCodeFragmentFiles(codeFile);
+ YangBits yangBits = (YangBits) type.getDataTypeExtendedInfo();
+ Integer key;
+ YangBit bit;
+ String bitName;
+ for (Map.Entry<Integer, YangBit> entry : yangBits.getBitPositionMap()
+ .entrySet()) {
+ key = entry.getKey();
+ bit = entry.getValue();
+ if (bit != null) {
+ bitName = bit.getBitName();
+ createAndAddEnum(bitName, key, enumeration);
+ }
+ }
+
+ codeFile.getEnumTempFiles()
+ .addEnumAttributeToTempFiles(enumeration, fileInfo.getPluginConfig());
+ codeFile.getEnumTempFiles().setEnumClass(false);
+ codeFile.generateJavaFile(GENERATE_ENUM_CLASS, enumeration);
+
+ //Add to import list.
+ JavaQualifiedTypeInfoTranslator info = new
+ JavaQualifiedTypeInfoTranslator();
+ info.setClassInfo(getCapitalCase(attrInfo.getJavaName()));
+ info.setPkgInfo(attrInfo.getPackage());
+ if (tempFile instanceof TempJavaTypeFragmentFiles) {
+ tempFile.getJavaImportData().addImportInfo(info, fileInfo
+ .getJavaName(), fileInfo.getPackage());
+ }
+ }
+
/**
* Generates interface file for those yang file which contains only any
* of these grouping, typedef and identity.
@@ -733,6 +826,6 @@
//generate java code for interface file.
validateLineLength(generateInterfaceFile(interFace, null, rootNode,
false));
- insertDataIntoJavaFile(interFace, methodClose(FOUR_SPACE));
+ insertDataIntoJavaFile(interFace, CLOSE_CURLY_BRACKET);
}
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
index 668b1e9..74e1931 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
@@ -27,9 +27,7 @@
import java.io.IOException;
import java.util.ArrayList;
-import java.util.List;
-import static java.util.Collections.unmodifiableList;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ALL_EVENT_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
@@ -60,11 +58,6 @@
private transient TempJavaCodeFragmentFiles tempFileHandle;
/**
- * List of notifications nodes.
- */
- private final transient List<YangNode> notificationNodes;
-
- /**
* Creates a YANG node of module type.
*/
public YangJavaModuleTranslator() {
@@ -194,15 +187,6 @@
}
/**
- * Returns notifications node list.
- *
- * @return notification nodes
- */
- public List<YangNode> getNotificationNodes() {
- return unmodifiableList(notificationNodes);
- }
-
- /**
* Adds to notification node list.
*
* @param curNode notification node
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
index f3b4416..d0e1f03 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
@@ -146,11 +146,13 @@
if (yangNode instanceof YangInput) {
javaAttributeInfoOfInput = tempJavaFragmentFiles
.getChildNodeAsAttributeInParentService(yangNode,
- getParent());
+ getParent(),
+ getJavaClassNameOrBuiltInType());
} else if (yangNode instanceof YangOutput) {
javaAttributeInfoOfOutput = tempJavaFragmentFiles
.getChildNodeAsAttributeInParentService(yangNode,
- getParent());
+ getParent(),
+ getJavaClassNameOrBuiltInType());
} else {
throw new TranslatorException(getErrorMsg(INVALID_CHILD_NODE,
this));
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
index 62f2962..c63f215 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
@@ -28,9 +28,7 @@
import java.io.IOException;
import java.util.ArrayList;
-import java.util.List;
-import static java.util.Collections.unmodifiableList;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ALL_EVENT_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
@@ -60,11 +58,6 @@
private transient TempJavaCodeFragmentFiles tempFileHandle;
/**
- * List of notifications nodes.
- */
- private final transient List<YangNode> notificationNodes;
-
- /**
* Creates YANG java sub module object.
*/
public YangJavaSubModuleTranslator() {
@@ -128,7 +121,7 @@
* @return the name space string of the module.
*/
public String getNameSpaceFromModule() {
- return ((YangModule) (getBelongsTo().getModuleNode())).getModuleNamespace();
+ return ((YangModule) getBelongsTo().getModuleNode()).getModuleNamespace();
}
/**
@@ -206,15 +199,6 @@
}
/**
- * Returns notifications node list.
- *
- * @return notification nodes
- */
- public List<YangNode> getNotificationNodes() {
- return unmodifiableList(notificationNodes);
- }
-
- /**
* Adds to notification node list.
*
* @param curNode notification node
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/BitsJavaInfoHandler.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/BitsJavaInfoHandler.java
deleted file mode 100644
index b0ce250..0000000
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/BitsJavaInfoHandler.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2016-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.onosproject.yangutils.translator.tojava.utils;
-
-import org.onosproject.yangutils.datamodel.YangBit;
-import org.onosproject.yangutils.datamodel.YangBits;
-import org.onosproject.yangutils.datamodel.YangEnum;
-import org.onosproject.yangutils.datamodel.YangEnumeration;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
-import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
-import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumerationTranslator;
-
-import java.io.IOException;
-import java.util.Map;
-
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-
-/**
- * Represents bits YANG type info.
- */
-public class BitsJavaInfoHandler {
-
- private JavaAttributeInfo attr;
- private YangType<?> yangType;
-
- /**
- * Creates an instance of bits java info handler.
- *
- * @param attr java attribute
- * @param yangType YANG type
- */
- public BitsJavaInfoHandler(JavaAttributeInfo attr, YangType<?> yangType) {
- this.attr = attr;
- this.yangType = yangType;
- }
-
- /**
- * Returns bits type enum file.
- *
- * @param attr attribute
- * @param type data type
- * @param curNode current node
- * @throws IOException when fails to do IO operations
- */
- static void generateBitsFile(JavaAttributeInfo attr, YangType type,
- YangNode curNode) throws IOException {
- JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) curNode)
- .getJavaFileInfo();
- String className = fileInfo.getJavaName() +
- getCapitalCase(attr.getAttributeName());
- JavaFileInfoTranslator attrInfo = new JavaFileInfoTranslator();
- attrInfo.setJavaName(className);
- attrInfo.setPackage(fileInfo.getPackage());
- attrInfo.setBaseCodeGenPath(fileInfo.getBaseCodeGenPath());
- attrInfo.setGeneratedFileTypes(GENERATE_ENUM_CLASS);
- attrInfo.setPackageFilePath(fileInfo.getPackageFilePath());
- attrInfo.setPluginConfig(fileInfo.getPluginConfig());
- TempJavaCodeFragmentFiles codeFile = new TempJavaCodeFragmentFiles(attrInfo);
- YangJavaEnumerationTranslator enumeration = new YangJavaEnumerationTranslator() {
- @Override
- public String getJavaPackage() {
- return attr.getImportInfo().getPkgInfo();
- }
-
- @Override
- public String getJavaClassNameOrBuiltInType() {
- return className;
- }
-
- @Override
- public String getJavaAttributeName() {
- return className;
- }
- };
-
- enumeration.setName(className);
- enumeration.setJavaFileInfo(attrInfo);
- enumeration.setTempJavaCodeFragmentFiles(codeFile);
- YangBits yangBits = (YangBits) type.getDataTypeExtendedInfo();
- Integer key;
- YangBit bit;
- String bitName;
- for (Map.Entry<Integer, YangBit> entry : yangBits.getBitPositionMap()
- .entrySet()) {
- key = entry.getKey();
- bit = entry.getValue();
- if (bit != null) {
- bitName = bit.getBitName();
- createAndAddEnum(bitName, key, enumeration);
- }
- }
-
- codeFile.getEnumTempFiles()
- .addEnumAttributeToTempFiles(enumeration, fileInfo.getPluginConfig());
- codeFile.getEnumTempFiles().setEnumClass(false);
- codeFile.generateJavaFile(GENERATE_ENUM_CLASS, enumeration);
- }
-
- private static void createAndAddEnum(String name, int value,
- YangEnumeration enumeration) {
- YangEnum yangEnum = new YangEnum();
- yangEnum.setNamedValue(name);
- yangEnum.setValue(value);
- try {
- enumeration.addEnumInfo(yangEnum);
- } catch (DataModelException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Returns java attribute for bits.
- *
- * @return java attribute for bits
- */
- public JavaAttributeInfo getAttr() {
- return attr;
- }
-
- /**
- * Returns YANG type for bits.
- *
- * @return yang type for bits
- */
- public YangType<?> getYangType() {
- return yangType;
- }
-}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 96db5c3..4cdf2e3 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -27,13 +27,11 @@
import java.util.List;
import static java.util.Collections.sort;
-import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.brackets;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getDefaultDefinition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOpenCloseParaWithValue;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
-import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
@@ -168,7 +166,7 @@
attrDef.append(attrType);
// Add ending definition.
- addAttrEndDef(annotation, attrDef, attrName);
+ addAttrEndDef(attrDef, attrName);
}
return attrDef.toString();
}
@@ -207,21 +205,12 @@
/**
* Adds ending attribute definition.
*
- * @param annotation compiler annotation
- * @param attrDef JAVA attribute definition
- * @param attrName name of attribute
+ * @param attrDef JAVA attribute definition
+ * @param attrName name of attribute
*/
- private static void addAttrEndDef(YangCompilerAnnotation annotation,
- StringBuilder attrDef, String attrName) {
- if (annotation != null &&
- annotation.getYangAppDataStructure() != null) {
- attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
- .append(attrName).append(signatureClose());
- } else {
- attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE).append(attrName)
- .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
- .append(SPACE).append(ARRAY_LIST).append(signatureClose());
- }
+ private static void addAttrEndDef(StringBuilder attrDef, String attrName) {
+ attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
+ .append(attrName).append(signatureClose());
}
/**
@@ -234,9 +223,8 @@
public static String generateEnumAttributeString(String name, int value) {
String enumName = getEnumJavaAttribute(name);
return enumJavaDocForInnerClass(name) + EIGHT_SPACE_INDENTATION +
- enumName.toUpperCase() + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- value + EMPTY_STRING, null) +
- COMMA + NEW_LINE;
+ enumName.toUpperCase() + getOpenCloseParaWithValue(
+ value + EMPTY_STRING) + COMMA + NEW_LINE;
}
/**
@@ -251,8 +239,8 @@
String enumName = getEnumJavaAttribute(name);
String str = value + COMMA + SPACE + QUOTES + name + QUOTES;
return getJavaDoc(ENUM_ATTRIBUTE, name, false, null) +
- FOUR_SPACE_INDENTATION + enumName.toUpperCase() + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, str, null) + COMMA + NEW_LINE;
+ FOUR_SPACE_INDENTATION + enumName.toUpperCase() +
+ getOpenCloseParaWithValue(str) + COMMA + NEW_LINE;
}
/**
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index 2033d2d..ed14647 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -17,8 +17,8 @@
package org.onosproject.yangutils.translator.tojava.utils;
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
+import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangDerivedInfo;
import org.onosproject.yangutils.datamodel.YangEnumeration;
@@ -27,7 +27,6 @@
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeDef;
import org.onosproject.yangutils.datamodel.YangUnion;
-import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
@@ -83,9 +82,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInTarget;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getQualifierInfoForCasesParent;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isGetSetOfRootNodeRequired;
-import static org.onosproject.yangutils.translator.tojava.utils.BitsJavaInfoHandler.generateBitsFile;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
@@ -96,6 +93,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.ENUM_METHOD_INT_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.ENUM_METHOD_STRING_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.builderMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.generateBuildMethodInAugmentClass;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodInterface;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentsDataMethodForService;
@@ -125,7 +123,6 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoInterface;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isLeafValueSetInterface;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.isSelectLeafSetInterface;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.processSubtreeFilteringInterface;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.setSelectLeafSetInterface;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getInterfaceLeafIdEnumMethods;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIsSelectLeafSet;
@@ -233,6 +230,7 @@
insertDataIntoJavaFile(file, getOperationTypeEnum());
}
List<String> methods = new ArrayList<>();
+
if (attrPresent) {
// Add getter methods to interface file.
try {
@@ -260,18 +258,6 @@
!(curNode instanceof YangChoice)) {
methods.add(getYangAugmentInfoInterface());
}
- if (curNode.isOpTypeReq()) {
- if (curNode instanceof YangCase) {
- YangNode caseParent = curNode.getParent();
- JavaQualifiedTypeInfo qualifiedTypeInfo =
- getQualifierInfoForCasesParent(caseParent,
- fileInfo.getPluginConfig());
- methods.add(processSubtreeFilteringInterface(
- qualifiedTypeInfo.getClassInfo()));
- } else {
- methods.add(processSubtreeFilteringInterface(className));
- }
- }
if (leavesPresent) {
methods.add(isLeafValueSetInterface());
@@ -449,6 +435,9 @@
methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles()
.addBuildMethodImpl());
+ if (curNode instanceof YangAugment) {
+ methods.add(generateBuildMethodInAugmentClass(className));
+ }
methods.add(addDefaultConstructor(curNode, PUBLIC, BUILDER));
//Add methods in builder class.
@@ -491,9 +480,11 @@
String className = getCapitalCase(fileInfo.getJavaName());
String opParamClassName = className;
+ String name = DEFAULT_CAPS + className;
String path;
if (curNode instanceof RpcNotificationContainer) {
opParamClassName = className + OP_PARAM;
+ name = opParamClassName;
rootNode = true;
path = fileInfo.getPluginConfig().getCodeGenDir() +
fileInfo.getPackageFilePath();
@@ -530,10 +521,10 @@
// add is filter content match.
augmentableSubTreeFiltering = getAugmentableSubTreeFiltering();
}
- methods.add(getProcessSubtreeFilteringStart(curNode, config) +
+ methods.add(getProcessSubtreeFilteringStart(curNode) +
getProcessSubtreeFunctionBody(curNode) +
augmentableSubTreeFiltering +
- getProcessSubTreeFilteringEnd());
+ getProcessSubTreeFilteringEnd(name, curNode));
if (curNode instanceof YangLeavesHolder) {
if (((YangLeavesHolder) curNode).getListOfLeaf() != null &&
@@ -630,11 +621,6 @@
methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(
TO_STRING_IMPL_MASK, getBeanFiles(curNode), path) +
getToStringMethodClose());
-
- for (BitsJavaInfoHandler handler : getBeanFiles(curNode)
- .getBitsHandler()) {
- generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
- }
} catch (IOException e) {
throw new IOException(getErrorMsg(className, IMPL_CLASS));
}
@@ -707,7 +693,7 @@
getTypeFiles(curNode), path)));
// To string method.
- addTypedefToString(curNode, methods, path);
+ addTypedefToString(curNode, methods);
JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
@@ -748,25 +734,17 @@
*
* @param curNode current node
* @param methods list of methods string
- * @param path file path
* @throws IOException a violation in IO rule
*/
private static void addTypedefToString(YangNode curNode,
- List<String> methods, String path)
+ List<String> methods)
throws IOException {
//To string method.
List<YangType<?>> types = ((YangTypeDef) curNode).getTypeList();
YangType type = types.get(0);
- String className = ((JavaFileInfoContainer) curNode).getJavaFileInfo()
- .getJavaName();
methods.add(getToStringForType(getCamelCase(type.getDataTypeName(),
- null), type, getCapitalCase(className)));
- for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
- .getBitsHandler()) {
- generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
- }
-
+ null), type));
}
/**
@@ -876,12 +854,7 @@
//To string method.
methods.add(getUnionToStringMethod(
- ((YangUnion) curNode).getTypeList(), getCapitalCase(className)));
-
- for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
- .getBitsHandler()) {
- generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
- }
+ ((YangUnion) curNode).getTypeList()));
//From string method.
methods.add(getFromStringMethodSignature(className) +
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index 818351d..d69f348 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -16,12 +16,12 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import org.onosproject.yangutils.datamodel.InvalidOpTypeHolder;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangLeafRef;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-import org.onosproject.yangutils.datamodel.YangNotification;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -670,7 +670,7 @@
}
YangNode node = targets.get(0).getResolvedNode();
- if (node instanceof YangNotification) {
+ if (node instanceof InvalidOpTypeHolder) {
return;
}
@@ -829,4 +829,5 @@
}
return attributeType;
}
+
}
\ No newline at end of file
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 77bf0f2..5fc99c0 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -16,13 +16,13 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import org.onosproject.yangutils.datamodel.InvalidOpTypeHolder;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
import org.onosproject.yangutils.datamodel.YangEnum;
import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangLeafRef;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNotification;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
@@ -37,7 +37,6 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET;
-import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.EIGHT_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWELVE_SPACE;
@@ -60,11 +59,13 @@
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getForLoopString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getGreaterThanCondition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getLeafFlagSetString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getLesserThanCondition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getListAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getNewInstance;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getNewLineAndSpace;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOmitNullValueString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOpenCloseParaWithValue;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOverRideString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getParseFromStringMethod;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getPatternQuoteString;
@@ -75,7 +76,6 @@
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getStringBuilderAttr;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getToStringCall;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getTrySubString;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getValueLeafSetString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifAndAndCondition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifConditionForIntInTypeDefConstructor;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifEqualEqualCondition;
@@ -99,6 +99,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_LOWER_CASE;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILD_FOR_FILTER;
import static org.onosproject.yangutils.utils.UtilConstants.CASE;
import static org.onosproject.yangutils.utils.UtilConstants.CLASS;
import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING;
@@ -176,6 +177,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.STATIC;
import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER_VAR;
import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERED;
import static org.onosproject.yangutils.utils.UtilConstants.SUFFIX_S;
import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
import static org.onosproject.yangutils.utils.UtilConstants.THIS;
@@ -187,6 +189,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
import static org.onosproject.yangutils.utils.UtilConstants.VOID;
import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
@@ -469,7 +472,8 @@
PUBLIC, name, getCapitalCase(className) +
BUILDER, type, CLASS_TYPE));
if (!isTypeNull && !isList) {
- builder.append(getValueLeafSetString(name));
+ builder.append(getLeafFlagSetString(name, VALUE_LEAF, EIGHT_SPACE_INDENTATION,
+ SET_METHOD_PREFIX)).append(signatureClose());
} else {
builder.append(EMPTY_STRING);
}
@@ -681,7 +685,10 @@
*/
public static String getRpcServiceMethod(String rpcName, String input,
String output) {
- String inputVal = input == null ? null : RPC_INPUT_VAR_NAME;
+ String inputVal = null;
+ if (input != null) {
+ inputVal = RPC_INPUT_VAR_NAME;
+ }
return methodSignature(rpcName, EMPTY_STRING, null,
inputVal, output, input, INTERFACE_TYPE) +
NEW_LINE;
@@ -790,15 +797,14 @@
* @param attr attribute info
* @param fromAttr attribute info for the from string wrapper
* type
- * @param name class name
* @return from string method's body string
*/
public static String getFromStringMethod(JavaAttributeInfo attr,
- JavaAttributeInfo fromAttr, String name) {
+ JavaAttributeInfo fromAttr) {
return EIGHT_SPACE_INDENTATION + getTrySubString() +
getNewLineAndSpace(TWELVE_SPACE_INDENTATION) +
- getParsedSubString(attr, fromAttr, name) +
+ getParsedSubString(attr, fromAttr) +
getReturnOfSubString() + EIGHT_SPACE_INDENTATION +
getCatchSubString() +
getNewLineAndSpace(EIGHT_SPACE_INDENTATION) +
@@ -809,11 +815,10 @@
* Returns sub string with parsed statement for union's from string method.
*
* @param attr attribute info
- * @param name class name
* @return sub string with parsed statement for union's from string method
*/
private static String getParsedSubString(JavaAttributeInfo attr,
- JavaAttributeInfo fromStringAttr, String name) {
+ JavaAttributeInfo fromStringAttr) {
String targetDataType = getReturnType(attr);
YangDataTypes types = fromStringAttr.getAttributeType()
@@ -822,10 +827,10 @@
switch (types) {
case BITS:
return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL +
- SPACE + getCapitalCase(name) + getCapitalCase(attr.getAttributeName()) +
+ SPACE + getCapitalCase(attr.getAttributeName()) +
PERIOD + FROM_STRING_METHOD_NAME +
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- FROM_STRING_PARAM_NAME, null) + signatureClose();
+ getOpenCloseParaWithValue(FROM_STRING_PARAM_NAME) +
+ signatureClose();
case BINARY:
return method.append(targetDataType).append(SPACE).append(TMP_VAL)
.append(SPACE).append(EQUAL).append(SPACE).append(
@@ -835,8 +840,8 @@
return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL +
SPACE + getParseFromStringMethod(
targetDataType, fromStringAttr.getAttributeType()) +
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- FROM_STRING_PARAM_NAME, null) + signatureClose();
+ getOpenCloseParaWithValue(FROM_STRING_PARAM_NAME) +
+ signatureClose();
}
}
@@ -850,8 +855,7 @@
StringBuilder builder = new StringBuilder();
return builder.append(BASE64).append(PERIOD)
.append(GET_DECODER).append(OPEN_CLOSE_BRACKET_STRING).append(PERIOD)
- .append(DECODE).append(brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- var, null)).toString();
+ .append(DECODE).append(getOpenCloseParaWithValue(var)).toString();
}
/**
@@ -865,8 +869,7 @@
return builder.append(BASE64).append(PERIOD)
.append(GET_ENCODER).append(OPEN_CLOSE_BRACKET_STRING)
.append(PERIOD).append(ENCODE_TO_STRING)
- .append(brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, var, null))
- .toString();
+ .append(getOpenCloseParaWithValue(var)).toString();
}
/**
@@ -1099,8 +1102,8 @@
if (genType == GENERATE_UNION_CLASS) {
builder.append(EIGHT_SPACE_INDENTATION).append(SET_VALUE_PARA)
.append(PERIOD).append(SET_METHOD_PREFIX).append(
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, count + EMPTY_STRING,
- null)).append(signatureClose());
+ getOpenCloseParaWithValue(count + EMPTY_STRING))
+ .append(signatureClose());
}
builder.append(methodBody(SETTER, name, null, EIGHT_SPACE_INDENTATION,
EMPTY_STRING, null, false, null))
@@ -1125,8 +1128,8 @@
null, type, CLASS_TYPE))
.append(EIGHT_SPACE_INDENTATION).append(SET_VALUE_PARA)
.append(PERIOD).append(SET_METHOD_PREFIX).append(
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, count + EMPTY_STRING,
- null)).append(signatureClose())
+ getOpenCloseParaWithValue(count + EMPTY_STRING))
+ .append(signatureClose())
.append(ifConditionForIntInTypeDefConstructor(validatorType,
addInt, attr1))
.append(methodBody(SETTER, attr1, null,
@@ -1252,8 +1255,8 @@
OF_METHOD, name + SPACE + FOR,
false, null));
//Switch statement.
- String sw = EIGHT_SPACE_INDENTATION + SWITCH + SPACE + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, VALUE, null) +
+ String sw = EIGHT_SPACE_INDENTATION + SWITCH + SPACE +
+ getOpenCloseParaWithValue(VALUE) +
methodSignatureClose(CLASS_TYPE);
String str;
switch (type) {
@@ -1336,7 +1339,7 @@
YangNode first = targets.get(0).getResolvedNode();
//If target path is for notification then no need to generate get/set
// for that augment in service class.
- if (first instanceof YangNotification) {
+ if (first instanceof InvalidOpTypeHolder) {
return EMPTY_STRING;
}
YangNode augmentedNode;
@@ -1420,15 +1423,13 @@
.append(ifAndAndCondition(
//Add == condition
ifEqualEqualCondition(
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- MIN_RANGE, null), ONE),
+ getOpenCloseParaWithValue(MIN_RANGE), ONE),
var))
//Add compareTo string.
.append(getCompareToString())
//Add == condition.
.append(ifEqualEqualCondition(
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- MAX_RANGE, null), ONE))
+ getOpenCloseParaWithValue(MAX_RANGE), ONE))
.append(signatureClose());
} else {
builder.append(getReturnString(VALUE, EIGHT_SPACE_INDENTATION))
@@ -1523,33 +1524,6 @@
}
/**
- * Returns is filter content match interface.
- *
- * @param name name of node
- * @return is filter content match interface
- */
- static String processSubtreeFilteringInterface(String name) {
- String method = " /**\n" +
- " * Checks if the passed " + name +
- " maps the content match query condition.\n" +
- " *\n" +
- " * @param " + getSmallCase(name) + SPACE +
- getSmallCase(name) + SPACE + "being passed to check" +
- " for" +
- " content match\n" +
- " * @param isSelectAllSchemaChild is select all schema child\n" +
- " * @return match result\n" +
- " */\n";
- LinkedHashMap<String, String> map = new LinkedHashMap<>();
- map.put(getSmallCase(name), name);
- map.put(SELECT_ALL_CHILD, BOOLEAN_DATA_TYPE);
-
- return method + multiAttrMethodSignature(PROCESS_SUBTREE_FILTERING,
- EMPTY_STRING, EMPTY_STRING,
- name, map, INTERFACE_TYPE);
- }
-
- /**
* Returns is value set interface.
*
* @return is value set interface
@@ -1650,18 +1624,16 @@
.append(SQUARE_BRACKETS).append(SPACE).append(BIT_NAMES_VAR)
.append(SPACE).append(EQUAL).append(SPACE).append(FROM_STRING_PARAM_NAME)
.append(PERIOD).append(TRIM_STRING).append(OPEN_CLOSE_BRACKET_STRING)
- .append(PERIOD).append(SPLIT_STRING).append(brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, getPatternQuoteString(SPACE),
- null)).append(signatureClose()).append(getForLoopString(
- EIGHT_SPACE_INDENTATION, STRING_DATA_TYPE, BIT_NAME_VAR,
- BIT_NAMES_VAR));
+ .append(PERIOD).append(SPLIT_STRING).append(getOpenCloseParaWithValue(
+ getPatternQuoteString(SPACE))).append(signatureClose()).append(
+ getForLoopString(EIGHT_SPACE_INDENTATION, STRING_DATA_TYPE, BIT_NAME_VAR,
+ BIT_NAMES_VAR));
String small = getSmallCase(bitClassName);
- sBuild.append(TWELVE_SPACE_INDENTATION).append(bitClassName).append
- (SPACE).append(small).append(SPACE).append(EQUAL).append
- (SPACE).append(bitClassName).append(PERIOD).append(OF).append
- (brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, BIT_NAME_VAR, null))
- .append(signatureClose());
+ sBuild.append(TWELVE_SPACE_INDENTATION).append(bitClassName).append(
+ SPACE).append(small).append(SPACE).append(EQUAL).append(
+ SPACE).append(bitClassName).append(PERIOD).append(OF).append(
+ getOpenCloseParaWithValue(BIT_NAME_VAR)).append(signatureClose());
String condition = small + SPACE + NOT + EQUAL + SPACE + NULL;
sBuild.append(getIfConditionBegin(TWELVE_SPACE_INDENTATION, condition))
.append(TWELVE_SPACE_INDENTATION)
@@ -1680,17 +1652,15 @@
/**
* Returns to string method for typedef.
*
- * @param attr attribute name
- * @param className class name
+ * @param attr attribute name
* @return to string method for typedef
*/
- static String getToStringForType(String attr, YangType type,
- String className) {
+ static String getToStringForType(String attr, YangType type) {
StringBuilder builder = new StringBuilder(getOverRideString())
.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, null,
STRING_DATA_TYPE, null, CLASS_TYPE));
builder.append(getReturnString(
- getToStringForSpecialType(className, type, attr), EIGHT_SPACE_INDENTATION))
+ getToStringForSpecialType(type, attr), EIGHT_SPACE_INDENTATION))
.append(signatureClose()).append(methodClose(FOUR_SPACE));
return builder.toString();
}
@@ -1698,12 +1668,10 @@
/**
* Returns to string method body for type class.
*
- * @param className class name
- * @param type type of attribute
- * @param name @return to string method body for typedef class
+ * @param type type of attribute
+ * @param name @return to string method body for typedef class
*/
- private static String getToStringForSpecialType(String className, YangType type,
- String name) {
+ private static String getToStringForSpecialType(YangType type, String name) {
switch (type.getDataType()) {
case INT8:
case INT16:
@@ -1712,16 +1680,15 @@
case UINT8:
case UINT16:
case UINT32:
- return STRING_DATA_TYPE + PERIOD + VALUE + OF_CAPS + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, name, null);
+ return STRING_DATA_TYPE + PERIOD + VALUE + OF_CAPS +
+ getOpenCloseParaWithValue(name);
case BINARY:
return getToStringCall(getToStringForBinary(name));
case BITS:
- return className + getCapitalCase(name) + PERIOD +
- TO_STRING_METHOD + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, name, null);
+ return getCapitalCase(name) + PERIOD +
+ TO_STRING_METHOD + getOpenCloseParaWithValue(name);
case BOOLEAN:
case EMPTY:
@@ -1733,7 +1700,7 @@
YangType<?> rt = lri.isInGrouping() ? null : lri
.getEffectiveDataType();
return rt == null ? getToStringCall(name) :
- getToStringForSpecialType(className, rt, name);
+ getToStringForSpecialType(rt, name);
case ENUMERATION:
case INSTANCE_IDENTIFIER:
@@ -1753,10 +1720,9 @@
* Returns union class's to string method.
*
* @param types list of types
- * @param name class name
* @return union class's to string method
*/
- static String getUnionToStringMethod(List<YangType<?>> types, String name) {
+ static String getUnionToStringMethod(List<YangType<?>> types) {
StringBuilder builder = new StringBuilder(getOverRideString());
builder.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, null,
@@ -1765,7 +1731,7 @@
builder.append(getIfConditionBegin(
EIGHT_SPACE_INDENTATION, getSetValueParaCondition(
types.indexOf(type)))).append(getReturnString(
- getToStringForSpecialType(name, type,
+ getToStringForSpecialType(type,
getCamelCase(type.getDataTypeName(), null)),
TWELVE_SPACE_INDENTATION))
.append(signatureClose()).append(methodClose(EIGHT_SPACE));
@@ -1843,4 +1809,52 @@
.append(signatureClose()).append(methodClose(FOUR_SPACE));
return builder.toString();
}
+
+ /**
+ * Returns is filter content match interface.
+ *
+ * @param name name of node
+ * @return is filter content match interface
+ */
+ static String processSubtreeFilteringInterface(String name) {
+ String method = " /**\n" +
+ " * Checks if the passed " + name +
+ " maps the content match query condition.\n" +
+ " *\n" +
+ " * @param " + getSmallCase(name) + SPACE +
+ getSmallCase(name) + SPACE + "being passed to check" +
+ " for" +
+ " content match\n" +
+ " * @param isSelectAllSchemaChild is select all schema child\n" +
+ " * @return match result\n" +
+ " */\n";
+ LinkedHashMap<String, String> map = new LinkedHashMap<>();
+ map.put(getSmallCase(name), name);
+ map.put(SELECT_ALL_CHILD, BOOLEAN_DATA_TYPE);
+
+ return method + multiAttrMethodSignature(PROCESS_SUBTREE_FILTERING,
+ EMPTY_STRING, EMPTY_STRING,
+ name, map, INTERFACE_TYPE);
+ }
+
+ /**
+ * Returns build method for augment class.
+ *
+ * @param name class name
+ * @return build method for augment class
+ */
+ static String generateBuildMethodInAugmentClass(String name) {
+ StringBuilder builder = new StringBuilder(getJavaDoc(BUILD_METHOD,
+ name, false, null));
+ String def = DEFAULT_CAPS + name;
+ builder.append(methodSignature(BUILD_FOR_FILTER, null, PUBLIC, null,
+ name, null, CLASS_TYPE))
+ .append(EIGHT_SPACE_INDENTATION).append(SUBTREE_FILTERED)
+ .append(SPACE).append(EQUAL).append(SPACE).append(TRUE)
+ .append(signatureClose()).append(methodBody(
+ MethodBodyTypes.BUILD, def, null, EIGHT_SPACE_INDENTATION,
+ null, null, false, null)).append(methodClose(FOUR_SPACE));
+ return builder.toString();
+ }
+
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
index 9dfbf80..dfe2826 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
@@ -16,32 +16,30 @@
package org.onosproject.yangutils.translator.tojava.utils;
+import org.onosproject.yangutils.datamodel.YangAugment;
+import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
+import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.exception.TranslatorException;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BOOLEAN;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DECIMAL64;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.EMPTY;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT8;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT64;
-import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET;
import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE_AND_RETURN_TYPE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getIfConditionForAddToListMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getQualifiedInfo;
import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.AND;
import static org.onosproject.yangutils.utils.UtilConstants.APPEND;
+import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
import static org.onosproject.yangutils.utils.UtilConstants.AT;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
@@ -68,6 +66,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
+import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION;
import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
import static org.onosproject.yangutils.utils.UtilConstants.EXTEND;
@@ -85,6 +84,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.INT_MAX_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.INT_MIN_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
import static org.onosproject.yangutils.utils.UtilConstants.LIST;
import static org.onosproject.yangutils.utils.UtilConstants.LONG;
import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
@@ -212,8 +212,8 @@
static String getNewInstance(String returnType, String varName,
String space, String value) {
return space + returnType + SPACE + varName + SPACE + EQUAL + SPACE +
- NEW + SPACE + returnType + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, value, null) + signatureClose();
+ NEW + SPACE + returnType + getOpenCloseParaWithValue(value) +
+ signatureClose();
}
/**
@@ -258,14 +258,16 @@
return TWENTY_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
NEW_LINE;
case TWENTY_EIGHT_SPACE:
- return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
- NEW_LINE;
+ return TWENTY_SPACE_INDENTATION + EIGHT_SPACE_INDENTATION +
+ CLOSE_CURLY_BRACKET + NEW_LINE;
case TWENTY_FOUR_SPACE:
+ return TWENTY_SPACE_INDENTATION + FOUR_SPACE_INDENTATION +
+ CLOSE_CURLY_BRACKET + NEW_LINE;
+ case FOUR_SPACE:
return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
NEW_LINE;
default:
- return FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
- NEW_LINE;
+ return CLOSE_CURLY_BRACKET + NEW_LINE;
}
}
@@ -306,9 +308,8 @@
return builder.toString();
case BUILD:
return getReturnString(
- NEW + SPACE + paraName + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, THIS, null) +
- signatureClose(), space);
+ NEW + SPACE + paraName + getOpenCloseParaWithValue(
+ THIS) + signatureClose(), space);
case CONSTRUCTOR:
return space + THIS + PERIOD + paraName + SPACE +
EQUAL + SPACE + BUILDER_LOWER_CASE + OBJECT + PERIOD +
@@ -321,8 +322,7 @@
return space + getIfConditionForAddToListMethod(paraName) +
space + paraName +
brackets(OPEN_CLOSE_BRACKET, null, null) + PERIOD +
- ADD_STRING +
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, VALUE, null) +
+ ADD_STRING + getOpenCloseParaWithValue(VALUE) +
signatureClose() + getReturnString(
THIS + signatureClose(), space);
case AUGMENTED_MAP_ADD:
@@ -332,10 +332,8 @@
CLOSE_PARENTHESIS + signatureClose();
case AUGMENTED_MAP_GET_VALUE:
return getReturnString(
- YANG_AUGMENTED_INFO_MAP + PERIOD + GET +
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, CLASS +
- OBJECT_STRING, null) + signatureClose(),
- space);
+ YANG_AUGMENTED_INFO_MAP + PERIOD + GET + getOpenCloseParaWithValue(
+ CLASS + OBJECT_STRING) + signatureClose(), space);
case AUGMENTED_MAP_GETTER:
return getReturnString(YANG_AUGMENTED_INFO_MAP +
signatureClose(), space);
@@ -351,9 +349,8 @@
return builder.toString();
case OF_METHOD:
return getReturnString(
- NEW + SPACE + paraName + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, VALUE, null)
- + signatureClose(), space);
+ NEW + SPACE + paraName + getOpenCloseParaWithValue(
+ VALUE) + signatureClose(), space);
case TO_STRING:
return getToStringMethodsAddString(space, paraName) + paraName +
CLOSE_PARENTHESIS;
@@ -384,6 +381,17 @@
return SEMI_COLON + NEW_LINE;
}
+
+ /**
+ * Returns value assignment.
+ *
+ * @return value assignment
+ */
+ static String valueAssign(String param, String value, String indentation) {
+ return indentation + param + SPACE + EQUAL + SPACE + value +
+ signatureClose();
+ }
+
/**
* Returns method signature close for method class type.
*
@@ -801,8 +809,7 @@
*/
static String getReturnOfSubString() {
return getReturnString(OF, TWELVE_SPACE_INDENTATION) +
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, TMP_VAL, null) +
- signatureClose();
+ getOpenCloseParaWithValue(TMP_VAL) + signatureClose();
}
/**
@@ -861,32 +868,11 @@
* @return if condition's signature
*/
static String getIfConditionBegin(String indentation, String condition) {
- return indentation + IF + SPACE + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, condition, EMPTY_STRING) +
+ return indentation + IF + SPACE + getOpenCloseParaWithValue(condition) +
methodSignatureClose(CLASS_TYPE);
}
/**
- * Returns whether the data type is of primitive data type.
- *
- * @param dataType data type to be checked
- * @return true, if data type can have primitive data type, false otherwise
- */
- static boolean isPrimitiveDataType(YangDataTypes dataType) {
- return dataType == INT8 ||
- dataType == INT16 ||
- dataType == INT32 ||
- dataType == INT64 ||
- dataType == UINT8 ||
- dataType == UINT16 ||
- dataType == UINT32 ||
- dataType == UINT64 ||
- dataType == DECIMAL64 ||
- dataType == BOOLEAN ||
- dataType == EMPTY;
- }
-
- /**
* Returns list string.
*
* @return list string
@@ -907,12 +893,16 @@
/**
* Returns value leaf flag setter.
*
- * @param name name of leaf
+ * @param name name of leaf
+ * @param flag flag to set values
+ * @param indentation indentation
+ * @param prefix prefix of method
* @return value leaf flag setter
*/
- static String getValueLeafSetString(String name) {
- return " valueLeafFlags.set(LeafIdentifier." +
- name.toUpperCase() + ".getLeafIndex());\n";
+ static String getLeafFlagSetString(String name, String flag, String indentation, String prefix) {
+ return indentation + flag + PERIOD + prefix +
+ getOpenCloseParaWithValue(LEAF_IDENTIFIER + PERIOD + name
+ .toUpperCase() + ".getLeafIndex()");
}
/*Provides string to return for type.*/
@@ -1115,7 +1105,7 @@
builder.append(STRING_BUILDER).append(SPACE).append(STRING_BUILDER_VAR)
.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
.append(SPACE).append(STRING_BUILDER).append(
- brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, getQuotedString(init), null))
+ getOpenCloseParaWithValue(getQuotedString(init)))
.append(signatureClose());
return builder.toString();
}
@@ -1149,8 +1139,8 @@
* @return pattern quote string
*/
static String getPatternQuoteString(String type) {
- return PATTERN + PERIOD + QUOTE_STRING + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, getQuotedString(type), null);
+ return PATTERN + PERIOD + QUOTE_STRING + getOpenCloseParaWithValue(
+ getQuotedString(type));
}
/**
@@ -1190,8 +1180,8 @@
* @return get string
*/
static String getSetValueParaCondition(int count) {
- return SET_VALUE_PARA + PERIOD + GET + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- count + EMPTY_STRING, null);
+ return SET_VALUE_PARA + PERIOD + GET + getOpenCloseParaWithValue(
+ count + EMPTY_STRING);
}
/**
@@ -1205,8 +1195,8 @@
StringBuilder attr = new StringBuilder(EIGHT_SPACE_INDENTATION);
String[] array = {NEW_LINE};
attr.append(MORE_OBJ_ATTR).append(GOOGLE_MORE_OBJECT_METHOD_STATIC_STRING)
- .append(brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, cls, null))
- .append(NEW_LINE).append(FOUR_SPACE_INDENTATION).append(trimAtLast(
+ .append(getOpenCloseParaWithValue(cls)).append(NEW_LINE)
+ .append(FOUR_SPACE_INDENTATION).append(trimAtLast(
getOmitNullValueString(), array)).append(signatureClose());
return attr.toString();
}
@@ -1221,4 +1211,101 @@
return name + PERIOD +
TO_STRING_METHOD + OPEN_CLOSE_BRACKET_STRING;
}
+
+ /**
+ * Returns value in brackets.
+ *
+ * @param name value
+ * @return value in brackets
+ */
+ static String getOpenCloseParaWithValue(String name) {
+ return brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, name, null);
+ }
+
+ /**
+ * Returns equals comparision.
+ *
+ * @param para1 param
+ * @param para2 param
+ * @return equals comparision
+ */
+ static String getTwoParaEqualsString(String para1, String para2) {
+ return para1 + PERIOD + EQUALS_STRING + getOpenCloseParaWithValue(para2);
+ }
+
+ /**
+ * Returns equal equal condition.
+ *
+ * @param para param
+ * @param val value
+ * @return equal equal condition
+ */
+ static String getEqualEqualString(String para, String val) {
+ return para + SPACE + EQUAL + EQUAL + SPACE + val;
+ }
+
+ /**
+ * Returns app instance method call.
+ *
+ * @param name attr name
+ * @return app instance method call
+ */
+ static String getAppInstanceAttrString(String name) {
+ return APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING;
+ }
+
+ /**
+ * Returns qualified name.
+ *
+ * @param pkg package
+ * @param cls class info
+ * @return qualified name
+ */
+ static String getQualifiedString(String pkg, String cls) {
+ return pkg + PERIOD + cls;
+ }
+
+ /**
+ * Returns import list for node list.
+ *
+ * @param nodes node list
+ * @param config plugin config
+ * @return import list
+ */
+ public static List<JavaQualifiedTypeInfoTranslator> getNodesImports(List<YangNode> nodes,
+ YangPluginConfig config) {
+ List<JavaQualifiedTypeInfoTranslator> imports = new ArrayList<>();
+ for (YangNode node : nodes) {
+ JavaQualifiedTypeInfoTranslator qInfo = getQualifiedInfo(node,
+ config);
+ imports.add(qInfo);
+ }
+ return imports;
+ }
+
+ /**
+ * Returns list of child node for choice.
+ *
+ * @param choice choice node
+ * @return list of child nodes
+ */
+ public static List<YangNode> getChoiceChildNodes(YangChoice choice) {
+ List<YangNode> childs = new ArrayList<>();
+ YangNode child = choice.getChild();
+ while (child != null) {
+ childs.add(child);
+ child = child.getNextSibling();
+ }
+
+ List<YangAugment> augments = choice.getAugmentedInfoList();
+ YangNode augmentCase;
+ for (YangAugment augment : augments) {
+ augmentCase = augment.getChild();
+ while (augmentCase != null) {
+ childs.add(augmentCase);
+ augmentCase = augmentCase.getNextSibling();
+ }
+ }
+ return childs;
+ }
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
index 952334c..c815027 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
@@ -16,106 +16,113 @@
package org.onosproject.yangutils.translator.tojava.utils;
+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.YangLeafRef;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
+import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_LEAF_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.FILTER_CONTENT_MATCH_FOR_NODES_MASK;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getNodesPackage;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.EIGHT_SPACE;
+import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.SIXTEEN_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWELVE_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWENTY_FOUR_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWENTY_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getAppInstanceAttrString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getChoiceChildNodes;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCollectionIteratorForLoopBegin;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getElseIfConditionBegin;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getEqualEqualString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getLeafFlagSetString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOpenCloseParaWithValue;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getTwoParaEqualsString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.multiAttrMethodSignature;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.valueAssign;
import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.AND_OPERATION;
import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.BREAK;
import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
-import static org.onosproject.yangutils.utils.UtilConstants.CATCH;
+import static org.onosproject.yangutils.utils.UtilConstants.BUILD_FOR_FILTER;
+import static org.onosproject.yangutils.utils.UtilConstants.CHOICE_STF_METHOD_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
-import static org.onosproject.yangutils.utils.UtilConstants.COLON;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
-import static org.onosproject.yangutils.utils.UtilConstants.CONTINUE;
+import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
+import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR;
import static org.onosproject.yangutils.utils.UtilConstants.FALSE;
-import static org.onosproject.yangutils.utils.UtilConstants.FOR;
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_LEAF_INDEX;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
+import static org.onosproject.yangutils.utils.UtilConstants.GET;
import static org.onosproject.yangutils.utils.UtilConstants.IF;
-import static org.onosproject.yangutils.utils.UtilConstants.ILLEGAL_ACCESS_EXCEPTION;
-import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE;
-import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION;
-import static org.onosproject.yangutils.utils.UtilConstants.INVOKE;
+import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
import static org.onosproject.yangutils.utils.UtilConstants.IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG;
import static org.onosproject.yangutils.utils.UtilConstants.IS_EMPTY;
import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_ALL_SCHEMA_CHILD_FLAG;
-import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
import static org.onosproject.yangutils.utils.UtilConstants.NEW;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.NOT;
-import static org.onosproject.yangutils.utils.UtilConstants.NO_SUCH_METHOD_EXCEPTION;
import static org.onosproject.yangutils.utils.UtilConstants.NULL;
-import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
-import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
+import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
+import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_CHILD_NODE_STF_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
-import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
+import static org.onosproject.yangutils.utils.UtilConstants.SELECT_ALL_CHILD_SCHEMA_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
+import static org.onosproject.yangutils.utils.UtilConstants.SELECT_OR_CONTAINMENT_NODE_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.STF_BUILDER_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.SUBTREE_FILTERING_RESULT_BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.THIRTY_TWO_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.THIS;
import static org.onosproject.yangutils.utils.UtilConstants.TO;
import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
-import static org.onosproject.yangutils.utils.UtilConstants.TRY;
import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_EIGHT_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_OP_PARAM_INFO;
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.getSmallCase;
/**
* Represents generator for subtree filtering methods of generated files
@@ -143,43 +150,45 @@
String attributeName = javaAttributeInfo.getAttributeName();
attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
type);
- return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
- + VALUE_LEAF +
- PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
- LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
- PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS +
- CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
- TWELVE_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
- attrQualifiedType + CLOSE_PARENTHESIS + SPACE +
- OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION +
- RETURN + SPACE + FALSE + SEMI_COLON + NEW_LINE +
- TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE +
- ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
- SIXTEEN_SPACE_INDENTATION +
- SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + attributeName +
- OPEN_PARENTHESIS + APP_INSTANCE + PERIOD + attributeName +
- OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
- CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
- TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
+ /* if (valueLeafFlags.get(LeafIdentifier.LEAF.getLeafIndex())) {
+ * if (appInstance.leaf() != leaf()) {
+ * return false;
+ * } else {
+ * subTreeFilteringResultBuilder.leaf(appInstance.leaf());
+ * }
+ * } else if (selectLeafFlags.get(LeafIdentifier.LEAF.getLeafIndex()) ||
+ * isSelectAllSchemaChild) {
+ * isAnySelectOrContainmentNode = true;
+ * subTreeFilteringResultBuilder.leaf(appInstance.leaf());
+ * }*/
+ return getIfConditionBegin(EIGHT_SPACE_INDENTATION, getLeafFlagSetString(
+ attributeName, VALUE_LEAF, EMPTY_STRING, GET)) +
+ getIfConditionBegin(TWELVE_SPACE_INDENTATION, attrQualifiedType) +
+ getReturnString(FALSE, SIXTEEN_SPACE_INDENTATION) +
+ signatureClose() +
+ TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE +
+ SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
+ getSubTreeBuilderCallString(SIXTEEN_SPACE_INDENTATION, attributeName,
+ TWELVE_SPACE) +
EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE +
- SPACE + IF + SPACE + OPEN_PARENTHESIS +
- SELECT_LEAF +
- PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
- LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
- PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS + SPACE +
- OR_OPERATION + SPACE + IS_SELECT_ALL_SCHEMA_CHILD_FLAG +
- CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
- TWELVE_SPACE_INDENTATION +
- IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL +
- SPACE + TRUE + SEMI_COLON + NEW_LINE +
- TWELVE_SPACE_INDENTATION + SUBTREE_FILTERING_RESULT_BUILDER +
- PERIOD + attributeName + OPEN_PARENTHESIS + APP_INSTANCE +
- PERIOD + attributeName + OPEN_CLOSE_BRACKET_STRING +
- CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
- EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+ getIfConditionBegin(SPACE, getLeafFlagSetString(
+ attributeName, SELECT_LEAF, EMPTY_STRING, GET) + SPACE +
+ OR_OPERATION + SPACE + IS_SELECT_ALL_SCHEMA_CHILD_FLAG) +
+ valueAssign(IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG, TRUE,
+ TWELVE_SPACE_INDENTATION) +
+ getSubTreeBuilderCallString(TWELVE_SPACE_INDENTATION, attributeName,
+ EIGHT_SPACE);
}
- private static String getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
+ private static String getSubTreeBuilderCallString(String indent, String
+ name, IndentationType type) {
+ return indent + SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + name +
+ getOpenCloseParaWithValue(APP_INSTANCE + PERIOD + name +
+ OPEN_CLOSE_BRACKET_STRING) +
+ signatureClose() + methodClose(type);
+ }
+
+ private static String getAttrTypeForFcmWhenPrimitiveDataType(
String attributeName) {
return/* TODO: Need to check if we can expose the value leaf flag in
interface.
@@ -194,56 +203,41 @@
CLOSE_PARENTHESIS;
}
- private static String
- getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
- String attributeName) {
- return APP_INSTANCE + PERIOD + attributeName + OPEN_PARENTHESIS +
- CLOSE_PARENTHESIS + SPACE + EQUAL + EQUAL + SPACE + NULL +
+ private static String attrTypeForFcmWhenNonPrimitiveDataTypes(String name) {
+ /*
+ * appInstance.name() == null || name().equals(appInstance.name())
+ */
+ return getEqualEqualString(StringGenerator.getAppInstanceAttrString(name), NULL) +
SPACE + OR_OPERATION + SPACE + NOT + OPEN_PARENTHESIS +
- attributeName + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
- PERIOD + EQUALS_STRING + OPEN_PARENTHESIS + APP_INSTANCE +
- PERIOD + attributeName + OPEN_PARENTHESIS +
- CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS;
+ getTwoParaEqualsString(name + OPEN_CLOSE_BRACKET_STRING,
+ StringGenerator.getAppInstanceAttrString(name))
+ + CLOSE_PARENTHESIS;
}
private static String getIfFilterContentMatchMethodImpl(
- String attributeName,
- YangType dataType) {
+ String name, YangType dataType) {
String attrQualifiedType;
-
- if (StringGenerator.isPrimitiveDataType(dataType.getDataType())) {
- attrQualifiedType =
- getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
- attributeName);
+ if (dataType.getDataType().isPrimitiveDataType()) {
+ attrQualifiedType = getAttrTypeForFcmWhenPrimitiveDataType(name);
} else if (dataType.getDataType() == LEAFREF) {
// When leafref in grouping.
if (((YangLeafRef) dataType.getDataTypeExtendedInfo())
.isInGrouping()) {
- attrQualifiedType =
- getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
- attributeName);
+ attrQualifiedType = attrTypeForFcmWhenNonPrimitiveDataTypes(name);
} else {
-
YangType type = ((YangLeafRef) dataType.getDataTypeExtendedInfo())
.getEffectiveDataType();
-
- if (StringGenerator.isPrimitiveDataType(type.getDataType())) {
- attrQualifiedType =
- getAttrTypeForFilterContentMatchWhenPrimitiveDataType(
- attributeName);
+ if (type.getDataType().isPrimitiveDataType()) {
+ attrQualifiedType = getAttrTypeForFcmWhenPrimitiveDataType(name);
} else {
- attrQualifiedType =
- getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
- attributeName);
+ attrQualifiedType = attrTypeForFcmWhenNonPrimitiveDataTypes(
+ name);
}
}
} else {
- attrQualifiedType =
- getAttrTypeForFilterContentMatchWhenNonPrimitiveDataTypes(
- attributeName);
+ attrQualifiedType = attrTypeForFcmWhenNonPrimitiveDataTypes(name);
}
-
return attrQualifiedType;
}
@@ -255,7 +249,7 @@
*/
public static String getSubtreeFilteringForLeafList(
JavaAttributeInfo javaAttributeInfo) {
- return getSubtreeFilteringForList(javaAttributeInfo, true);
+ return getSubtreeFilteringForList(javaAttributeInfo, true, null);
}
/**
@@ -273,63 +267,47 @@
throws IOException {
JavaFileInfoTranslator javaFileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- JavaFileInfoTranslator parentInfo;
-
String instance = APP_INSTANCE;
String name = getCapitalCase(javaFileInfo.getJavaName());
String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
- if (curNode instanceof YangCase) {
- instance = INSTANCE;
- YangNode parent = curNode.getParent();
- if (parent instanceof YangChoice) {
- parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
- name = getCapitalCase(parentInfo.getJavaName());
- } else if (parent instanceof YangAugment) {
- parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
- .getAugmentedNode()).getJavaFileInfo();
- if (parentInfo != null) {
- name = getCapitalCase(parentInfo.getJavaName());
- } else {
- name = getCapitalCase(getCamelCase(
- ((YangAugment) parent).getAugmentedNode().getName(),
- pluginConfig.getConflictResolver()));
- }
- }
- }
- String processSubtreeFilteringMethod =
- FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
- SPACE + "processChildNodesSubTreeFiltering" +
- OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
- SPACE + builderNamePrefix + BUILDER + SPACE +
- "subTreeFilteringResultBuilder" + COMMA + NEW_LINE +
- TWELVE_SPACE_INDENTATION + "Boolean " +
- "isAnySelectOrContainmentNode, " + "boolean " +
- "isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
- SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+ Map<String, String> param = new HashMap<>();
+ param.put(PROCESS_CHILD_NODE_STF_PARAM, BOOLEAN_DATA_TYPE);
+ param.put(instance, name);
+ param.put(STF_BUILDER_PARAM, builderNamePrefix + BUILDER);
+ param.put(SELECT_OR_CONTAINMENT_NODE_PARAM, BOOLEAN_WRAPPER);
+ param.put(SELECT_ALL_CHILD_SCHEMA_PARAM, BOOLEAN_WRAPPER);
- if (curNode instanceof YangCase) {
- String caseName = getCapitalCase(javaFileInfo.getJavaName());
- processSubtreeFilteringMethod =
- processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
- caseName + SPACE + APP_INSTANCE + SPACE +
- EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
- CLOSE_PARENTHESIS + SPACE + instance +
- SEMI_COLON + NEW_LINE;
- }
- processSubtreeFilteringMethod +=
+ String method = FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
+ SPACE + PROCESS_CHILD_NODE_STF_PARAM +
+ OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
+ SPACE + builderNamePrefix + BUILDER + SPACE +
+ STF_BUILDER_PARAM + COMMA +
+ " Boolean " +
+ "isAnySelectOrContainmentNode, " + "boolean " +
+ SELECT_ALL_CHILD_SCHEMA_PARAM + CLOSE_PARENTHESIS +
+ SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
+
+ method +=
getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_NODES_MASK,
((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles()
.getBeanTempFiles(), path);
- processSubtreeFilteringMethod +=
+ method +=
EIGHT_SPACE_INDENTATION + RETURN + SPACE + TRUE + SEMI_COLON +
NEW_LINE + FOUR_SPACE_INDENTATION +
CLOSE_CURLY_BRACKET + NEW_LINE + NEW_LINE;
+ YangNode child = curNode.getChild();
+ while (child != null) {
+ if (child instanceof YangChoice) {
+ method += getChoiceInstanceForPstMethod(child, name);
+ }
+ child = child.getNextSibling();
+ }
- return processSubtreeFilteringMethod;
+ return method;
}
/**
@@ -347,51 +325,20 @@
throws IOException {
JavaFileInfoTranslator javaFileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- JavaFileInfoTranslator parentInfo;
-
- String instance = APP_INSTANCE;
String name = getCapitalCase(javaFileInfo.getJavaName());
String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
- if (curNode instanceof YangCase) {
- instance = INSTANCE;
- YangNode parent = curNode.getParent();
- if (parent instanceof YangChoice) {
- parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
- name = getCapitalCase(parentInfo.getJavaName());
- } else if (parent instanceof YangAugment) {
- parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
- .getAugmentedNode()).getJavaFileInfo();
- if (parentInfo != null) {
- name = getCapitalCase(parentInfo.getJavaName());
- } else {
- name = getCapitalCase(getCamelCase(
- ((YangAugment) parent).getAugmentedNode().getName(),
- pluginConfig.getConflictResolver()));
- }
- }
- }
String processSubtreeFilteringMethod =
FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
SPACE + "processLeafListSubTreeFiltering" +
- OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
+ OPEN_PARENTHESIS + name + SPACE + APP_INSTANCE + COMMA +
SPACE + builderNamePrefix + BUILDER + SPACE +
- "subTreeFilteringResultBuilder" + COMMA + NEW_LINE +
- TWELVE_SPACE_INDENTATION + "Boolean " +
+ "subTreeFilteringResultBuilder" + COMMA +
+ " Boolean " +
"isAnySelectOrContainmentNode, " + "boolean " +
"isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
- if (curNode instanceof YangCase) {
- String caseName = getCapitalCase(javaFileInfo.getJavaName());
- processSubtreeFilteringMethod =
- processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
- caseName + SPACE + APP_INSTANCE + SPACE +
- EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
- CLOSE_PARENTHESIS + SPACE + instance +
- SEMI_COLON + NEW_LINE;
- }
-
processSubtreeFilteringMethod += getDataFromTempFileHandle(
FILTER_CONTENT_MATCH_FOR_LEAF_LIST_MASK,
((TempJavaCodeFragmentFilesContainer) curNode)
@@ -420,51 +367,20 @@
throws IOException {
JavaFileInfoTranslator javaFileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- JavaFileInfoTranslator parentInfo;
-
- String instance = APP_INSTANCE;
String name = getCapitalCase(javaFileInfo.getJavaName());
String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
- if (curNode instanceof YangCase) {
- instance = INSTANCE;
- YangNode parent = curNode.getParent();
- if (parent instanceof YangChoice) {
- parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
- name = getCapitalCase(parentInfo.getJavaName());
- } else if (parent instanceof YangAugment) {
- parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
- .getAugmentedNode()).getJavaFileInfo();
- if (parentInfo != null) {
- name = getCapitalCase(parentInfo.getJavaName());
- } else {
- name = getCapitalCase(getCamelCase(
- ((YangAugment) parent).getAugmentedNode().getName(),
- pluginConfig.getConflictResolver()));
- }
- }
- }
String processSubtreeFilteringMethod =
FOUR_SPACE_INDENTATION + PRIVATE + SPACE + BOOLEAN_DATA_TYPE +
SPACE + "processLeafSubtreeFiltering" +
- OPEN_PARENTHESIS + name + SPACE + instance + COMMA +
+ OPEN_PARENTHESIS + name + SPACE + APP_INSTANCE + COMMA +
SPACE + builderNamePrefix + BUILDER + SPACE +
- "subTreeFilteringResultBuilder" + COMMA + NEW_LINE
- + TWELVE_SPACE_INDENTATION + "Boolean " +
+ "subTreeFilteringResultBuilder" + COMMA +
+ " Boolean " +
"isAnySelectOrContainmentNode, " + "boolean " +
"isSelectAllSchemaChild" + CLOSE_PARENTHESIS +
SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
- if (curNode instanceof YangCase) {
- String caseName = getCapitalCase(javaFileInfo.getJavaName());
- processSubtreeFilteringMethod =
- processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
- caseName + SPACE + APP_INSTANCE + SPACE +
- EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
- CLOSE_PARENTHESIS + SPACE + instance +
- SEMI_COLON + NEW_LINE;
- }
-
processSubtreeFilteringMethod +=
getDataFromTempFileHandle(FILTER_CONTENT_MATCH_FOR_LEAF_MASK,
((TempJavaCodeFragmentFilesContainer) curNode)
@@ -482,40 +398,34 @@
/**
* Returns is filter content match for leaf.
*
- * @param curNode current node
- * @param pluginConfig plugin configurations
+ * @param curNode current node
* @return is filter content match for leaf
*/
- static String getProcessSubtreeFilteringStart(YangNode curNode,
- YangPluginConfig
- pluginConfig) {
+ static String getProcessSubtreeFilteringStart(YangNode curNode) {
JavaFileInfoTranslator javaFileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- JavaFileInfoTranslator parentInfo;
-
String instance = APP_INSTANCE;
String name = getCapitalCase(javaFileInfo.getJavaName());
String builderNamePrefix = getCapitalCase(javaFileInfo.getJavaName());
- if (curNode instanceof YangCase) {
- instance = INSTANCE;
- YangNode parent = curNode.getParent();
- if (parent instanceof YangChoice) {
- parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
- name = getCapitalCase(parentInfo.getJavaName());
- } else if (parent instanceof YangAugment) {
- parentInfo = ((JavaFileInfoContainer) ((YangAugment) parent)
- .getAugmentedNode()).getJavaFileInfo();
- if (parentInfo != null) {
- name = getCapitalCase(parentInfo.getJavaName());
- } else {
- name = getCapitalCase(getCamelCase(
- ((YangAugment) parent).getAugmentedNode().getName(),
- pluginConfig.getConflictResolver()));
- }
- }
+ if (curNode instanceof RpcNotificationContainer) {
+ name = getCapitalCase(javaFileInfo.getJavaName()) + OP_PARAM;
+ } else {
+ name = DEFAULT_CAPS + name;
}
+ String javadoc = " /**\n" +
+ " * Checks if the passed " + name +
+ " maps the content match query condition.\n" +
+ " *\n" +
+ " * @param " + instance + SPACE +
+ instance + SPACE + "being passed to check" +
+ " for" +
+ " content match\n" +
+ " * @param isSelectAllSchemaChild is select all schema child\n" +
+ " * @return match result\n" +
+ " */\n";
+
String processSubtreeFilteringMethod =
- StringGenerator.getOverRideString() + FOUR_SPACE_INDENTATION +
+ javadoc + FOUR_SPACE_INDENTATION +
PUBLIC + SPACE + name + SPACE +
PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name +
SPACE + instance + COMMA + SPACE + BOOLEAN_DATA_TYPE +
@@ -529,17 +439,6 @@
NEW_LINE + EIGHT_SPACE_INDENTATION + "Boolean" + SPACE +
IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE +
EQUAL + SPACE + FALSE + SEMI_COLON + NEW_LINE;
-
- if (curNode instanceof YangCase) {
- String caseName = getCapitalCase(javaFileInfo.getJavaName());
- processSubtreeFilteringMethod =
- processSubtreeFilteringMethod + EIGHT_SPACE_INDENTATION +
- caseName + SPACE + APP_INSTANCE + SPACE +
- EQUAL + SPACE + OPEN_PARENTHESIS + caseName +
- CLOSE_PARENTHESIS + SPACE + instance +
- SEMI_COLON + NEW_LINE;
- }
-
return processSubtreeFilteringMethod;
}
@@ -557,11 +456,10 @@
if (((YangLeavesHolder) curNode).getListOfLeaf() != null
&&
!((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) {
- method += StringGenerator
- .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
+ method +=
+ getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
"processLeafSubtreeFiltering(appInstance, " +
- "subTreeFilteringResultBuilder," + NEW_LINE +
- TWELVE_SPACE_INDENTATION +
+ "subTreeFilteringResultBuilder, " +
"isAnySelectOrContainmentNode, " +
"isSelectAllSchemaChild)");
@@ -577,11 +475,10 @@
&&
!((YangLeavesHolder) curNode).getListOfLeafList()
.isEmpty()) {
- method += StringGenerator
- .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
+ method +=
+ getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
"processLeafListSubTreeFiltering(appInstance," +
- " subTreeFilteringResultBuilder," + NEW_LINE
- + TWELVE_SPACE_INDENTATION +
+ " subTreeFilteringResultBuilder, " +
"isAnySelectOrContainmentNode, " +
"isSelectAllSchemaChild)");
@@ -594,11 +491,10 @@
if (curNode.getChild() != null) {
- method += StringGenerator
- .getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
+ method +=
+ getIfConditionBegin(EIGHT_SPACE_INDENTATION, NOT +
"processChildNodesSubTreeFiltering(appInstance, " +
- "subTreeFilteringResultBuilder," + NEW_LINE +
- TWELVE_SPACE_INDENTATION +
+ "subTreeFilteringResultBuilder, " +
"isAnySelectOrContainmentNode, " +
"isSelectAllSchemaChild)");
@@ -615,29 +511,32 @@
* Returns is filter content match for node.
*
* @param attr attribute info
+ * @param node YANG node
* @return is filter content match for node
*/
- public static String getSubtreeFilteringForNode(JavaAttributeInfo attr) {
+ public static String getSubtreeFilteringForNode(JavaAttributeInfo attr,
+ YangNode node) {
boolean isList = attr.isListAttr();
if (isList) {
- return getSubtreeFilteringForList(attr, false);
+ return getSubtreeFilteringForList(attr, false, node);
} else {
- return getSubtreeFilteringForChildNode(attr);
+ return getSubtreeFilteringForChildNode(attr, node);
}
}
/**
* Returns is filter content match close.
*
+ * @param name name of class
+ * @param curNode current node
* @return is filter content match close
*/
- static String getProcessSubTreeFilteringEnd() {
- String method = StringGenerator
- .getIfConditionBegin(EIGHT_SPACE_INDENTATION,
- NOT + IS_SELECT_ALL_SCHEMA_CHILD_FLAG +
- SPACE + AND_OPERATION + SPACE +
- NOT +
- IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG);
+ static String getProcessSubTreeFilteringEnd(String name, YangNode curNode) {
+ String method = getIfConditionBegin(EIGHT_SPACE_INDENTATION,
+ NOT + IS_SELECT_ALL_SCHEMA_CHILD_FLAG +
+ SPACE + AND_OPERATION + SPACE +
+ NOT +
+ IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG);
method += TWELVE_SPACE_INDENTATION + RETURN + SPACE +
PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + APP_INSTANCE +
@@ -645,9 +544,13 @@
NEW_LINE;
method += methodClose(EIGHT_SPACE);
-
- method += EIGHT_SPACE_INDENTATION + RETURN + SPACE +
- SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + BUILD +
+ String build = BUILD;
+ if (curNode instanceof YangAugment) {
+ build = BUILD_FOR_FILTER;
+ }
+ method += EIGHT_SPACE_INDENTATION + RETURN + SPACE + getOpenCloseParaWithValue(
+ name) + SPACE +
+ SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + build +
OPEN_CLOSE_BRACKET_STRING + SEMI_COLON + NEW_LINE +
FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
@@ -658,21 +561,37 @@
* Returns filter content match for child nodes.
*
* @param javaAttributeInfo attribute to be added
+ * @param node YANG node
* @return filter content match for child nodes
*/
private static String getSubtreeFilteringForChildNode(
- JavaAttributeInfo javaAttributeInfo) {
+ JavaAttributeInfo javaAttributeInfo, YangNode node) {
String name = javaAttributeInfo.getAttributeName();
- name = getSmallCase(name);
- String type = javaAttributeInfo.getImportInfo().getClassInfo();
+ String clsInfo = javaAttributeInfo.getImportInfo()
+ .getClassInfo();
+ String type = DEFAULT_CAPS + javaAttributeInfo.getImportInfo()
+ .getClassInfo();
if (javaAttributeInfo.isQualifiedName()) {
type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
type;
+ clsInfo = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
+ clsInfo;
}
+ String classCast = getOpenCloseParaWithValue(type) + SPACE;
+ String cast = getOpenCloseParaWithValue(classCast + name);
+ String resultString = cast +
+ PERIOD + PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS
+ + classCast +
+ APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING
+ + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
+ NEW_LINE;
- String method = StringGenerator
- .getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + "() != " +
- "null");
+ if (node != null && node instanceof YangChoice) {
+ resultString = getReturnStringInCaseOfChoice(node);
+ }
+ String method =
+ getIfConditionBegin(EIGHT_SPACE_INDENTATION, name + "() != " +
+ "null || isSelectAllSchemaChild");
method += TWELVE_SPACE_INDENTATION +
IS_ANY_SELECT_OR_CONTAINMENT_NODE_FLAG + SPACE + EQUAL + SPACE +
@@ -684,11 +603,24 @@
+ EQUAL + SPACE + NULL + CLOSE_PARENTHESIS + SPACE +
OPEN_CURLY_BRACKET + NEW_LINE;
- method += SIXTEEN_SPACE_INDENTATION + type + SPACE + "result = " +
- name + PERIOD + PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS +
- APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING
- + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
- NEW_LINE;
+ method += SIXTEEN_SPACE_INDENTATION + clsInfo + SPACE + "result" +
+ SEMI_COLON + NEW_LINE;
+
+ method +=
+ getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
+ "isSelectAllSchemaChild");
+
+ method += TWENTY_SPACE_INDENTATION + "result" + SPACE + EQUAL + SPACE +
+ APP_INSTANCE + PERIOD + name + OPEN_PARENTHESIS +
+ CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
+
+ method += SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE +
+ ELSE + SPACE +
+ OPEN_CURLY_BRACKET + NEW_LINE;
+
+ method += TWENTY_SPACE_INDENTATION + "result = " + resultString;
+
+ method += SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
method += SIXTEEN_SPACE_INDENTATION + "if (result != null) {" +
NEW_LINE;
@@ -712,32 +644,48 @@
*
* @param javaAttributeInfo attribute information
* @param isLeafList if for leaf list
+ * @param node YANG node
* @return filter content match for list types
*/
private static String getSubtreeFilteringForList(
- JavaAttributeInfo javaAttributeInfo, boolean isLeafList) {
+ JavaAttributeInfo javaAttributeInfo, boolean isLeafList,
+ YangNode node) {
String capitalCaseName =
getCapitalCase(javaAttributeInfo.getAttributeName());
String name = javaAttributeInfo.getAttributeName();
- String type = javaAttributeInfo.getImportInfo().getClassInfo();
+ String type = javaAttributeInfo.getImportInfo()
+ .getClassInfo();
+ String clsInfo = DEFAULT_CAPS + type;
if (javaAttributeInfo.isQualifiedName()) {
type = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
type;
+ clsInfo = javaAttributeInfo.getImportInfo().getPkgInfo() + PERIOD +
+ clsInfo;
+ }
+
+ String classCast = getOpenCloseParaWithValue(clsInfo) + SPACE;
+ String cast = getOpenCloseParaWithValue(classCast + name);
+ String resultString = cast + PERIOD +
+ PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + classCast +
+ name + "2" + COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
+ NEW_LINE;
+
+ if (node != null && node instanceof YangChoice) {
+ resultString = getReturnStringInCaseOfChoice(node);
}
/*
* If select all schema child
*/
- String method = StringGenerator
- .getIfConditionBegin(EIGHT_SPACE_INDENTATION,
- IS_SELECT_ALL_SCHEMA_CHILD_FLAG);
+ String method =
+ getIfConditionBegin(EIGHT_SPACE_INDENTATION,
+ IS_SELECT_ALL_SCHEMA_CHILD_FLAG);
- method = method + StringGenerator
- .getCollectionIteratorForLoopBegin(TWELVE_SPACE_INDENTATION,
- type + SPACE + name,
- APP_INSTANCE + PERIOD +
- name +
- OPEN_CLOSE_BRACKET_STRING);
+ method = method + getCollectionIteratorForLoopBegin(TWELVE_SPACE_INDENTATION,
+ type + SPACE + name,
+ APP_INSTANCE + PERIOD +
+ name +
+ OPEN_CLOSE_BRACKET_STRING);
method = method + SIXTEEN_SPACE_INDENTATION +
SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
@@ -747,11 +695,10 @@
method += methodClose(TWELVE_SPACE); // Close collection Iteration loop
//If need to explicitly participate in query
- method += StringGenerator
- .getElseIfConditionBegin(EIGHT_SPACE_INDENTATION,
- name + OPEN_CLOSE_BRACKET_STRING +
- SPACE + NOT + EQUAL +
- SPACE + NULL);
+ method += getElseIfConditionBegin(EIGHT_SPACE_INDENTATION,
+ name + OPEN_CLOSE_BRACKET_STRING +
+ SPACE + NOT + EQUAL +
+ SPACE + NULL);
if (!isLeafList) {
method += TWELVE_SPACE_INDENTATION +
@@ -760,24 +707,24 @@
}
//If there is any parameter in the query condition
- method += StringGenerator
- .getIfConditionBegin(TWELVE_SPACE_INDENTATION, NOT + name +
+ method +=
+ getIfConditionBegin(TWELVE_SPACE_INDENTATION, NOT + name +
OPEN_CLOSE_BRACKET_STRING + PERIOD + IS_EMPTY);
if (isLeafList) {
/*
* If there is no app instance to perform content match
*/
- method += StringGenerator
- .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
- APP_INSTANCE + PERIOD + name +
- OPEN_CLOSE_BRACKET_STRING +
- SPACE + EQUAL + EQUAL + SPACE +
- NULL + SPACE + OR_OPERATION
- + SPACE + APP_INSTANCE +
- PERIOD + name +
- OPEN_CLOSE_BRACKET_STRING +
- PERIOD + IS_EMPTY);
+ method +=
+ getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
+ APP_INSTANCE + PERIOD + name +
+ OPEN_CLOSE_BRACKET_STRING +
+ SPACE + EQUAL + EQUAL + SPACE +
+ NULL + SPACE + OR_OPERATION
+ + SPACE + APP_INSTANCE +
+ PERIOD + name +
+ OPEN_CLOSE_BRACKET_STRING +
+ PERIOD + IS_EMPTY);
method += TWENTY_SPACE_INDENTATION + RETURN + SPACE + FALSE +
SEMI_COLON + NEW_LINE;
@@ -785,7 +732,7 @@
method += methodClose(SIXTEEN_SPACE);
// for instance iterator
- method += StringGenerator.getCollectionIteratorForLoopBegin(
+ method += getCollectionIteratorForLoopBegin(
SIXTEEN_SPACE_INDENTATION, type + SPACE + name,
name + OPEN_CLOSE_BRACKET_STRING);
@@ -794,20 +741,20 @@
NEW_LINE;
// for app instance iterator
- method += StringGenerator
- .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
- type + SPACE + name +
- "2",
- APP_INSTANCE + PERIOD +
- name +
- OPEN_CLOSE_BRACKET_STRING);
+ method +=
+ getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
+ type + SPACE + name +
+ "2",
+ APP_INSTANCE + PERIOD +
+ name +
+ OPEN_CLOSE_BRACKET_STRING);
//the content match leaf list attribute value matches
- method += StringGenerator
- .getIfConditionBegin(TWENTY_FOUR_SPACE_INDENTATION,
- name + PERIOD + EQUALS_STRING
- + OPEN_PARENTHESIS + name +
- "2" + CLOSE_PARENTHESIS);
+ method +=
+ getIfConditionBegin(TWENTY_FOUR_SPACE_INDENTATION,
+ name + PERIOD + EQUALS_STRING
+ + OPEN_PARENTHESIS + name +
+ "2" + CLOSE_PARENTHESIS);
method += TWENTY_EIGHT_SPACE_INDENTATION + "flag" + SPACE + EQUAL +
SPACE + TRUE + SEMI_COLON + NEW_LINE;
@@ -826,8 +773,8 @@
method += methodClose(TWENTY_SPACE);
//if the content match failed
- method += StringGenerator
- .getIfConditionBegin(TWENTY_SPACE_INDENTATION, "!flag");
+ method +=
+ getIfConditionBegin(TWENTY_SPACE_INDENTATION, "!flag");
method += TWENTY_FOUR_SPACE_INDENTATION + RETURN + SPACE + FALSE +
SEMI_COLON + NEW_LINE;
@@ -839,37 +786,34 @@
} else {
/*if there is any app instance entry*/
- method += StringGenerator
- .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
- APP_INSTANCE + PERIOD + name +
- OPEN_CLOSE_BRACKET_STRING +
- SPACE + NOT + EQUAL + SPACE +
- NULL + SPACE + AND_OPERATION +
- SPACE + NOT + APP_INSTANCE +
- PERIOD + name +
- OPEN_CLOSE_BRACKET_STRING +
- PERIOD + IS_EMPTY);
+ method +=
+ getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
+ APP_INSTANCE + PERIOD + name +
+ OPEN_CLOSE_BRACKET_STRING +
+ SPACE + NOT + EQUAL + SPACE +
+ NULL + SPACE + AND_OPERATION +
+ SPACE + NOT + APP_INSTANCE +
+ PERIOD + name +
+ OPEN_CLOSE_BRACKET_STRING +
+ PERIOD + IS_EMPTY);
/*
* loop all the query condition instance(s)
*/
- method += StringGenerator
- .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
- type + SPACE + name,
- name +
- OPEN_CLOSE_BRACKET_STRING);
+ method +=
+ getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
+ type + SPACE + name,
+ name +
+ OPEN_CLOSE_BRACKET_STRING);
//loop all the app instance(s)
- method += StringGenerator.getCollectionIteratorForLoopBegin(
+ method += getCollectionIteratorForLoopBegin(
TWENTY_FOUR_SPACE_INDENTATION, type + SPACE + name + "2",
APP_INSTANCE + PERIOD + name +
OPEN_CLOSE_BRACKET_STRING);
method += TWENTY_EIGHT_SPACE_INDENTATION + type + SPACE +
- "result = " + name + PERIOD +
- PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS + name + "2" +
- COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
- NEW_LINE;
+ "result = " + resultString;
method += TWENTY_EIGHT_SPACE_INDENTATION + "if (result != null) {" +
NEW_LINE;
@@ -900,23 +844,23 @@
EQUAL + SPACE + TRUE + SEMI_COLON + NEW_LINE;
}
- method += StringGenerator
- .getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
- APP_INSTANCE + PERIOD + name
- + OPEN_CLOSE_BRACKET_STRING +
- SPACE + NOT + EQUAL + SPACE +
- NULL + SPACE + AND_OPERATION +
- SPACE + NOT + APP_INSTANCE +
- PERIOD + name +
- OPEN_CLOSE_BRACKET_STRING +
- PERIOD + IS_EMPTY);
+ method +=
+ getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
+ APP_INSTANCE + PERIOD + name
+ + OPEN_CLOSE_BRACKET_STRING +
+ SPACE + NOT + EQUAL + SPACE +
+ NULL + SPACE + AND_OPERATION +
+ SPACE + NOT + APP_INSTANCE +
+ PERIOD + name +
+ OPEN_CLOSE_BRACKET_STRING +
+ PERIOD + IS_EMPTY);
- method = method + StringGenerator
- .getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
- type + SPACE + name,
- APP_INSTANCE + PERIOD +
- name +
- OPEN_CLOSE_BRACKET_STRING);
+ method = method +
+ getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
+ type + SPACE + name,
+ APP_INSTANCE + PERIOD +
+ name +
+ OPEN_CLOSE_BRACKET_STRING);
method = method + TWENTY_FOUR_SPACE_INDENTATION +
SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING
@@ -938,55 +882,132 @@
//Returns method string for op params augmented syntax
static String getAugmentableSubTreeFiltering() {
- return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS +
- OBJECT_STRING + SPACE + YANG_AUGMENTED_INFO_LOWER_CASE +
- SPACE + COLON + SPACE + THIS + PERIOD +
- YANG_AUGMENTED_INFO_MAP +
- OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
- + VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
- CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
- NEW_LINE + TWELVE_SPACE_INDENTATION + OBJECT_STRING + SPACE +
- getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) + SPACE + EQUAL +
- SPACE + APP_INSTANCE + PERIOD +
- YANG_AUGMENTED_INFO_LOWER_CASE + OPEN_PARENTHESIS +
- YANG_AUGMENTED_INFO_LOWER_CASE + PERIOD +
- GET_CLASS + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
- TWELVE_SPACE_INDENTATION + OBJECT + SPACE +
- PROCESS_SUBTREE_FILTERING + SEMI_COLON
- + NEW_LINE + TWELVE_SPACE_INDENTATION + TRY + SPACE +
- OPEN_CURLY_BRACKET + NEW_LINE +
- SIXTEEN_SPACE_INDENTATION +
- "Class<?>[] interfaces = " + YANG_AUGMENTED_INFO_LOWER_CASE +
- ".getClass().getInterfaces();" +
- NEW_LINE + SIXTEEN_SPACE_INDENTATION +
- PROCESS_SUBTREE_FILTERING + SPACE + EQUAL + SPACE +
- YANG_AUGMENTED_INFO_LOWER_CASE + PERIOD + GET_CLASS +
- NEW_LINE + TWENTY_SPACE_INDENTATION + PERIOD +
- GET_METHOD + OPEN_PARENTHESIS + QUOTES +
- PROCESS_SUBTREE_FILTERING + QUOTES + COMMA + SPACE +
- "interfaces[0]" + CLOSE_PARENTHESIS + PERIOD + INVOKE +
- OPEN_PARENTHESIS + YANG_AUGMENTED_INFO_LOWER_CASE +
- COMMA + NEW_LINE + TWENTY_FOUR_SPACE_INDENTATION +
- getSmallCase(YANG_AUGMENTED_OP_PARAM_INFO) +
- CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
- SIXTEEN_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
- PROCESS_SUBTREE_FILTERING + SPACE + NOT + EQUAL + SPACE +
- NULL + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
- NEW_LINE + TWENTY_SPACE_INDENTATION +
- SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + "add" +
- YANG_AUGMENTED_INFO + OPEN_PARENTHESIS +
- PROCESS_SUBTREE_FILTERING + COMMA + SPACE +
- PROCESS_SUBTREE_FILTERING + PERIOD + GET_CLASS +
- CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
- SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
- NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
- SPACE + CATCH + SPACE + OPEN_PARENTHESIS +
- NO_SUCH_METHOD_EXCEPTION + " | " +
- INVOCATION_TARGET_EXCEPTION + " | " + ILLEGAL_ACCESS_EXCEPTION +
- SPACE + EXCEPTION_VAR + CLOSE_PARENTHESIS + SPACE +
- OPEN_CURLY_BRACKET + NEW_LINE + SIXTEEN_SPACE_INDENTATION +
- CONTINUE + SEMI_COLON + NEW_LINE +
- TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
- EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
+ return " for (Object augmentInfo : this.yangAugmentedInfoMap()" +
+ ".values()) {\n" +
+ " Object appInstanceInfo = appInstance.yangAugmentedInfo(" +
+ "augmentInfo.getClass());\n" +
+ " if (appInstanceInfo == null) {\n" +
+ " subTreeFilteringResultBuilder.addYangAugmentedInfo(" +
+ "augmentInfo, augmentInfo.getClass());\n" +
+ " } else {\n" +
+ " Object processSubtreeFiltering;\n" +
+ " try {\n" +
+ " Class<?> augmentedClass = augmentInfo" +
+ ".getClass();\n" +
+ " processSubtreeFiltering = augmentInfo.getClass()" +
+ ".getMethod(\"processSubtreeFiltering\", augmentedClass).invoke(" +
+ "augmentInfo, appInstanceInfo);\n" +
+ " if (processSubtreeFiltering != null) {\n" +
+ " subTreeFilteringResultBuilder" +
+ ".addYangAugmentedInfo(processSubtreeFiltering, processSubtreeFiltering.getClass());\n" +
+ " }\n" +
+ " } catch (NoSuchMethodException |" +
+ " InvocationTargetException | IllegalAccessException e) {\n" +
+ " continue;\n" +
+ " }\n" +
+ " }\n" +
+ " }\n";
}
+
+ private static String getMethodBodyForChoicePstMethod(
+ YangNode node, YangPluginConfig config, YangNode choiceParent,
+ String choice) {
+ StringBuilder builder = new StringBuilder();
+ JavaCodeGeneratorInfo info = (JavaCodeGeneratorInfo) choiceParent;
+ JavaFileInfoTranslator pInfo = info.getJavaFileInfo();
+
+ JavaQualifiedTypeInfoTranslator qInfo = getQualifiedInfo(node, config);
+
+ String castVar = qInfo.getClassInfo();
+ boolean qualify = info.getTempJavaCodeFragmentFiles().getBeanTempFiles()
+ .getJavaImportData().addImportInfo(qInfo, pInfo.getJavaName(),
+ pInfo.getPackage());
+ if (qualify) {
+ castVar = StringGenerator.getQualifiedString(qInfo.getPkgInfo(),
+ qInfo.getClassInfo());
+ }
+ String classCast = getOpenCloseParaWithValue(castVar) + SPACE;
+ String cast = getOpenCloseParaWithValue(classCast + choice);
+ String retString = cast + PERIOD + PROCESS_SUBTREE_FILTERING +
+ getOpenCloseParaWithValue(classCast + getAppInstanceAttrString
+ (choice) + COMMA + SPACE + FALSE);
+ String cond = choice + INSTANCE_OF + castVar;
+ builder.append(getIfConditionBegin(EIGHT_SPACE_INDENTATION, cond))
+ .append(getReturnString(retString, TWELVE_SPACE_INDENTATION))
+ .append(signatureClose()).append(methodClose(EIGHT_SPACE));
+ return builder.toString();
+ }
+
+ /**
+ * Returns choice instance for PST method.
+ *
+ * @param choice choice node
+ * @param className class name
+ * @return choice instance for pst method
+ */
+ private static String getChoiceInstanceForPstMethod(YangNode choice,
+ String className) {
+ /*
+ * private Choice1 getChoice1ResultOfProcessSubTree(Choice1 choice1, Test appInstance) {
+ * if (choice1 instanceof DefaultCase1) {
+ * return ((DefaultCase1) choice1).processSubtreeFiltering(
+ * appInstance.choice1(), false);
+ * }
+ * return null;
+ * }
+ */
+
+ JavaFileInfoTranslator info = ((JavaFileInfoContainer) choice).getJavaFileInfo();
+ String name = info.getJavaName();
+ String caps = getCapitalCase(name);
+ StringBuilder builder = new StringBuilder();
+ String methodName = caps + CHOICE_STF_METHOD_NAME;
+ Map<String, String> param = new LinkedHashMap<>();
+ param.put(name, caps);
+ param.put(APP_INSTANCE, className);
+
+ builder.append(multiAttrMethodSignature(methodName, GET, PRIVATE, caps,
+ param, CLASS_TYPE));
+
+ for (YangNode cases : getChoiceChildNodes((YangChoice) choice)) {
+ builder.append(getMethodBodyForChoicePstMethod(cases, info.getPluginConfig(),
+ choice.getParent(), name));
+ }
+ builder.append(getReturnString(NULL, FOUR_SPACE_INDENTATION))
+ .append(signatureClose()).append(methodClose(FOUR_SPACE));
+ return builder.toString();
+ }
+
+ private static String getReturnStringInCaseOfChoice(YangNode choice) {
+ JavaFileInfoTranslator info = ((JavaFileInfoContainer) choice)
+ .getJavaFileInfo();
+ String name = info.getJavaName();
+ String caps = getCapitalCase(name);
+ String methodName = caps + CHOICE_STF_METHOD_NAME;
+ return GET + methodName + getOpenCloseParaWithValue(
+ name + COMMA + SPACE + APP_INSTANCE) + signatureClose();
+ }
+
+ static JavaQualifiedTypeInfoTranslator getQualifiedInfo(
+ YangNode node, YangPluginConfig config) {
+ JavaFileInfoTranslator fileInfo = ((JavaCodeGeneratorInfo) node)
+ .getJavaFileInfo();
+ String name = fileInfo.getJavaName();
+ String pkg = fileInfo.getPackage();
+ if (config == null) {
+ config = new YangPluginConfig();
+ }
+ if (name == null) {
+ name = getCamelCase(node.getName(), config.getConflictResolver());
+ pkg = getNodesPackage(node, config);
+ }
+
+ name = DEFAULT_CAPS + getCapitalCase(name);
+ JavaQualifiedTypeInfoTranslator qInfo = new
+ JavaQualifiedTypeInfoTranslator();
+ qInfo.setClassInfo(name);
+ qInfo.setPkgInfo(pkg);
+ return qInfo;
+ }
+
}