[ONOS-5482][ONOS-5275] Yms Operation requirement Implementation in onos-yang-tools
Change-Id: I463ed105f85ca65a61ff251e5ca062903d465551
diff --git a/generator/src/main/java/org/onosproject/yangutils/linker/impl/XpathLinkingTypes.java b/generator/src/main/java/org/onosproject/yangutils/linker/impl/XpathLinkingTypes.java
new file mode 100644
index 0000000..87e7fae
--- /dev/null
+++ b/generator/src/main/java/org/onosproject/yangutils/linker/impl/XpathLinkingTypes.java
@@ -0,0 +1,31 @@
+/*
+ * 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.linker.impl;
+
+/**
+ * Represents x path linking types.
+ */
+public enum XpathLinkingTypes {
+
+ // Augment path linking.
+ AUGMENT_LINKING,
+
+ // Leaf ref path linking.
+ LEAF_REF_LINKING,
+
+ // Compiler annotation linking.
+ COMPILER_ANNOTATION_LINKING
+}
diff --git a/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java b/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
index 84de876..480d8c6 100644
--- a/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
+++ b/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
@@ -78,6 +78,8 @@
import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.UNDEFINED;
import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.UNRESOLVED;
import static org.onosproject.yangutils.datamodel.utils.YangConstructType.PATH_DATA;
+import static org.onosproject.yangutils.linker.impl.XpathLinkingTypes.AUGMENT_LINKING;
+import static org.onosproject.yangutils.linker.impl.XpathLinkingTypes.LEAF_REF_LINKING;
import static org.onosproject.yangutils.linker.impl.YangLinkerUtils.detectCollisionForAugmentedNode;
import static org.onosproject.yangutils.linker.impl.YangLinkerUtils.getErrorInfoForLinker;
import static org.onosproject.yangutils.linker.impl.YangLinkerUtils.getLeafRefErrorInfo;
@@ -1026,7 +1028,8 @@
YangNode targetNode;
YangAugment augment = (YangAugment) entityToResolve;
targetNode = xPathLinker
- .processAugmentXpathLinking(augment.getTargetNode(), (YangNode) root);
+ .processXpathLinking(augment.getTargetNode(), (YangNode)
+ root, AUGMENT_LINKING);
if (targetNode != null) {
if (targetNode instanceof YangAugmentableNode) {
detectCollisionForAugmentedNode(targetNode, augment);
@@ -1053,8 +1056,9 @@
} else if (entityToResolve instanceof YangCompilerAnnotation) {
YangNode targetNode;
YangCompilerAnnotation ca = (YangCompilerAnnotation) entityToResolve;
- targetNode = xPathLinker.processAugmentXpathLinking(ca.getAtomicPathList(),
- (YangNode) root);
+ targetNode = xPathLinker.processXpathLinking(ca.getAtomicPathList(),
+ (YangNode) root,
+ AUGMENT_LINKING);
if (targetNode != null) {
if (targetNode instanceof YangList) {
((YangList) targetNode).setCompilerAnnotation(
@@ -1074,7 +1078,7 @@
} else if (entityToResolve instanceof YangLeafRef) {
YangLeafRef leafRef = (YangLeafRef) entityToResolve;
Object target = xPathLinker.processLeafRefXpathLinking(
- leafRef.getAtomicPath(), (YangNode) root, leafRef);
+ leafRef.getAtomicPath(), (YangNode) root, leafRef, LEAF_REF_LINKING);
if (target != null) {
YangLeaf leaf;
YangLeafList leafList;
@@ -1210,13 +1214,13 @@
/*
* Obtain the referred node of top of stack entity under resolution
*/
- T referredNode = getRefNode();
+ T refNode = getRefNode();
/*
* Check for null for scenario when it's not linked and inter-file
* linking is required.
*/
- if (referredNode == null) {
+ if (refNode == null) {
/*
* Check if prefix is null or not, to identify whether to search in
@@ -1247,7 +1251,7 @@
throw ex;
} else {
((Resolvable) entity).setResolvableStatus(INTER_FILE_LINKED);
- addUnresolvedRecursiveReferenceToStack((YangNode) referredNode);
+ addUnresolvedRecursiveReferenceToStack((YangNode) refNode);
}
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java b/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
index 83f4a1a..f049dbd 100644
--- a/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
+++ b/generator/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
@@ -20,6 +20,7 @@
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
+import org.onosproject.yangutils.datamodel.YangGrouping;
import org.onosproject.yangutils.datamodel.YangImport;
import org.onosproject.yangutils.datamodel.YangInclude;
import org.onosproject.yangutils.datamodel.YangInput;
@@ -48,7 +49,9 @@
import static org.onosproject.yangutils.linker.impl.PrefixResolverType.INTRA_TO_INTER;
import static org.onosproject.yangutils.linker.impl.PrefixResolverType.NO_PREFIX_CHANGE_FOR_INTER;
import static org.onosproject.yangutils.linker.impl.PrefixResolverType.NO_PREFIX_CHANGE_FOR_INTRA;
+import static org.onosproject.yangutils.linker.impl.XpathLinkingTypes.AUGMENT_LINKING;
import static org.onosproject.yangutils.utils.UtilConstants.COLON;
+import static org.onosproject.yangutils.utils.UtilConstants.ERROR_MSG_FOR_AUGMENT_LINKING;
import static org.onosproject.yangutils.utils.UtilConstants.FAILED_TO_FIND_LEAD_INFO_HOLDER;
import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
import static org.onosproject.yangutils.utils.UtilConstants.IS_INVALID;
@@ -69,6 +72,7 @@
private Map<YangAtomicPath, PrefixResolverType> prefixResolverTypes;
private String curPrefix;
private String constructsParentsPrefix;
+ private XpathLinkingTypes linkingType;
/**
* Creates an instance of x-path linker.
@@ -101,14 +105,16 @@
* @param atomicPaths atomic path node list
* @param root root node
* @param leafref instance of YANG leafref
+ * @param curLinking x path linking type
* @return linked target node
*/
T processLeafRefXpathLinking(List<YangAtomicPath> atomicPaths, YangNode root,
- YangLeafRef leafref) {
+ YangLeafRef leafref, XpathLinkingTypes curLinking) {
YangNode targetNode;
rootNode = root;
prefixResolverTypes = new HashMap<>();
+ linkingType = curLinking;
parsePrefixResolverList(atomicPaths);
YangAtomicPath leafRefPath = atomicPaths.get(atomicPaths.size() - 1);
@@ -191,15 +197,17 @@
/**
* Process absolute node path linking for augment.
*
- * @param paths absolute path node list
- * @param root root node
+ * @param paths absolute path node list
+ * @param root root node
+ * @param curLinking x path linker type
* @return linked target node
*/
- public YangNode processAugmentXpathLinking(List<YangAtomicPath> paths,
- YangNode root) {
+ public YangNode processXpathLinking(List<YangAtomicPath> paths,
+ YangNode root, XpathLinkingTypes curLinking) {
absPaths = paths;
rootNode = root;
prefixResolverTypes = new HashMap<>();
+ linkingType = curLinking;
parsePrefixResolverList(paths);
YangNode targetNode = parseData(root);
if (targetNode == null) {
@@ -237,8 +245,8 @@
/**
* Searches for the referred leaf-list in target node.
*
- * @param targetNode target node
- * @param name leaf-list name
+ * @param targetNode target node
+ * @param name leaf-list name
* @return target leaf-list
*/
private YangLeafList searchReferredLeafList(YangNode targetNode, String name) {
@@ -317,6 +325,7 @@
if (tempNode != null) {
tempPath.setResolvedNode(tempNode);
+ validateTempPathNode(tempNode);
}
if (index == absPaths.size() - 1) {
@@ -329,6 +338,29 @@
}
/**
+ * Validates temp path nodes for augment linking.
+ *
+ * @param node temp path node
+ */
+ private void validateTempPathNode(YangNode node) {
+
+ if (linkingType != AUGMENT_LINKING) {
+ return;
+ }
+ if (node instanceof YangGrouping) {
+ LinkerException ex = new LinkerException(
+ ERROR_MSG_FOR_AUGMENT_LINKING +
+ getAugmentNodeIdentifier(
+ absPaths.get(absPaths.size() - 1).getNodeIdentifier(),
+ absPaths,
+ rootNode));
+ ex.setFileName(rootNode.getFileName());
+ throw ex;
+
+ }
+ }
+
+ /**
* Resolves intra file augment linking.
*
* @param tempPath temporary absolute path
@@ -739,5 +771,4 @@
YangNode rootNode) {
((RpcNotificationContainer) rootNode).addToAugmentList(augment);
}
-
}
\ No newline at end of file
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index a2e78f3..346fba2 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -24,6 +24,7 @@
import static java.util.Collections.unmodifiableSortedSet;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT_EVENT;
+import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
@@ -245,6 +246,15 @@
*
* @return import for to bitset method
*/
+ public String getImportForToBase64() {
+ return getImportString(JAVA_UTIL_PKG, BASE64);
+ }
+
+ /**
+ * Returns import for to bitset method.
+ *
+ * @return import for to bitset method
+ */
public String getImportForPattern() {
return getImportString(JAVA_UTIL_REGEX_PKG, PATTERN);
}
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 ec97d8e..0e1c132 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
@@ -26,6 +26,7 @@
import org.onosproject.yangutils.datamodel.YangList;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaFileInfo;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -90,6 +91,7 @@
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.getImportString;
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;
@@ -101,6 +103,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getErrorMsg;
import static org.onosproject.yangutils.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.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
@@ -118,14 +121,16 @@
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
+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.VALUE_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.YANG;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.readAppendFile;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ADD_TO_LIST;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.SETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePackagePath;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -261,6 +266,11 @@
private static final String BUILDER_CLASS_FILE_NAME_SUFFIX = BUILDER;
/**
+ *
+ */
+ private boolean isBinary;
+
+ /**
* Information about the java files being generated.
*/
private JavaFileInfoTranslator javaFileInfo;
@@ -760,8 +770,10 @@
String containedInCls = getCapitalCase(tempFiles.getJavaFileInfo()
.getJavaName());
String containedInPkg = tempFiles.getJavaFileInfo().getPackage();
- JavaQualifiedTypeInfoTranslator info = new JavaQualifiedTypeInfoTranslator();
- if (container.getDataType().getDataType() == YangDataTypes.BITS) {
+ JavaQualifiedTypeInfoTranslator info;
+ if (container.getDataType().getDataType() == YangDataTypes.BINARY) {
+ tempFiles.setBinary(true);
+ } else if (container.getDataType().getDataType() == YangDataTypes.BITS) {
//Add bitset import for type and leaf value flags.
info = new JavaQualifiedTypeInfoTranslator();
info.setClassInfo(BIT_SET);
@@ -1051,13 +1063,7 @@
throws IOException {
String setter = getSetterForClass(attr, getGeneratedJavaClassName(),
getGeneratedJavaFiles());
- if (rootNode) {
- appendToFile(setterImplTempFileHandle,
- getJavaDoc(SETTER_METHOD, attr.getAttributeName(),
- attr.isListAttr(), null) + setter);
- } else {
- appendToFile(setterImplTempFileHandle, getOverRideString() + setter);
- }
+ appendToFile(setterImplTempFileHandle, getOverRideString() + setter);
}
/**
@@ -1070,12 +1076,8 @@
throws IOException {
String getter = getGetterForClass(attr, getGeneratedJavaFiles());
if (javaFlagSet(BUILDER_CLASS_MASK)) {
- if (!rootNode) {
- appendToFile(getterImplTempFileHandle, getOverRideString() +
- getter);
- } else {
- appendToFile(getterImplTempFileHandle, getter);
- }
+ appendToFile(getterImplTempFileHandle, getOverRideString() +
+ getter);
} else {
String appDataStructure = null;
if (attr.getCompilerAnnotation() != null) {
@@ -1111,8 +1113,8 @@
private void addAddToListImpl(JavaAttributeInfo attr)
throws IOException {
appendToFile(addToListImplTempFileHandle,
- getAddToListMethodImpl(attr, getGeneratedJavaClassName(),
- rootNode) + NEW_LINE);
+ getAddToListMethodImpl(attr, getGeneratedJavaClassName()
+ ) + NEW_LINE);
}
/**
@@ -1276,7 +1278,7 @@
* @return temporary file handle
* @throws IOException when fails to create new file handle
*/
- protected File getJavaFileHandle(String fileName)
+ public File getJavaFileHandle(String fileName)
throws IOException {
return getFileObject(getDirPath(), fileName, JAVA_FILE_EXTENSION,
javaFileInfo);
@@ -1455,15 +1457,93 @@
JavaQualifiedTypeInfoTranslator typeInfo =
new JavaQualifiedTypeInfoTranslator();
typeInfo.setClassInfo(OPERATION_TYPE_CLASS);
- typeInfo.setPkgInfo(((JavaFileInfoContainer) curNode).getJavaFileInfo()
- .getPackage());
+ JavaFileInfo curInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+ JavaFileInfo info;
+ if (curNode instanceof RpcNotificationContainer) {
+ info = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
+ } else {
+ info = ((JavaFileInfoContainer) getModuleNode(curNode))
+ .getJavaFileInfo();
+ }
+
+ typeInfo.setPkgInfo(info.getPackage().toLowerCase() + PERIOD +
+ getCapitalCase(info.getJavaName()));
+ String curNodeName = getCapitalCase(curInfo.getJavaName());
+ if (!(curNode instanceof RpcNotificationContainer)) {
+ javaImportData.addImportInfo(typeInfo, curNodeName, curInfo
+ .getPackage());
+ }
JavaAttributeInfo attributeInfo =
- getAttributeInfoForTheData(typeInfo, YANG + getCapitalCase(
- curNode.getJavaClassNameOrBuiltInType()) +
+ getAttributeInfoForTheData(typeInfo, YANG + curNodeName +
OPERATION_TYPE_ATTRIBUTE, null, false, false);
addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
}
+ private YangNode getModuleNode(YangNode curNode) {
+ YangNode tempNode = curNode.getParent();
+ while (!(tempNode instanceof RpcNotificationContainer)) {
+ tempNode = tempNode.getParent();
+ }
+ return tempNode;
+ }
+
+ /**
+ * Adds value leaf flag to temp files.
+ *
+ * @param config YANG plugin config
+ * @param node YANG node
+ * @throws IOException IO exception
+ */
+ protected void addValueLeafFlag(YangPluginConfig config, YangNode node)
+ throws IOException {
+ JavaFileInfo info = ((JavaFileInfoContainer) node).getJavaFileInfo();
+ JavaQualifiedTypeInfoTranslator typeInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ typeInfo.setClassInfo(BIT_SET);
+ typeInfo.setPkgInfo(JAVA_UTIL_PKG);
+ this.getJavaImportData().addImportInfo(typeInfo, info.getJavaName(),
+ info.getPackage());
+ JavaAttributeInfo attributeInfo =
+ getAttributeInfoForTheData(typeInfo, VALUE_LEAF, null, false, false);
+ addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
+ }
+
+ /**
+ * Adds value leaf flag to temp files.
+ *
+ * @param config YANG plugin config
+ * @throws IOException IO exception
+ */
+ protected void addSelectLeafFlag(YangPluginConfig config)
+ throws IOException {
+ JavaQualifiedTypeInfoTranslator typeInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ typeInfo.setClassInfo(BIT_SET);
+ typeInfo.setPkgInfo(JAVA_UTIL_PKG);
+ JavaAttributeInfo attributeInfo =
+ getAttributeInfoForTheData(typeInfo, SELECT_LEAF, null, false, false);
+ addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
+ }
+
+ /**
+ * Adds value leaf flag to temp files.
+ *
+ * @param config YANG plugin config
+ * @throws IOException IO exception
+ */
+ protected void addYangAugmentedMap(YangPluginConfig config)
+ throws IOException {
+ JavaQualifiedTypeInfoTranslator typeInfo =
+ new JavaQualifiedTypeInfoTranslator();
+ typeInfo.setClassInfo(AUGMENT_MAP_TYPE);
+ //Fix for add yangAugmentedInfo in equals/hashcode/and to string method.
+ typeInfo.setPkgInfo(null);
+ JavaAttributeInfo attributeInfo =
+ getAttributeInfoForTheData(typeInfo, YANG_AUGMENTED_INFO_MAP,
+ null, false, false);
+ addJavaSnippetInfoToApplicableTempFiles(attributeInfo, config);
+ }
+
/**
* Adds the new attribute info to the target generated temporary files.
*
@@ -1475,16 +1555,20 @@
YangPluginConfig pluginConfig)
throws IOException {
isAttributePresent = true;
+ String attrName = newAttrInfo.getAttributeName();
+ boolean required = !attrName.equals(VALUE_LEAF) &&
+ !attrName.equals(SELECT_LEAF) &&
+ !attrName.equals(YANG_AUGMENTED_INFO_MAP);
if (tempFlagSet(ATTRIBUTES_MASK)) {
addAttribute(newAttrInfo);
}
if (tempFlagSet(GETTER_FOR_INTERFACE_MASK)) {
addGetterForInterface(newAttrInfo);
}
- if (tempFlagSet(SETTER_FOR_INTERFACE_MASK)) {
+ if (tempFlagSet(SETTER_FOR_INTERFACE_MASK) && required) {
addSetterForInterface(newAttrInfo);
}
- if (tempFlagSet(SETTER_FOR_CLASS_MASK)) {
+ if (tempFlagSet(SETTER_FOR_CLASS_MASK) && required) {
addSetterImpl(newAttrInfo);
}
if (tempFlagSet(HASH_CODE_IMPL_MASK)) {
@@ -1508,8 +1592,8 @@
}
YangType attrType = newAttrInfo.getAttributeType();
if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_NODES_MASK) &&
- attrType == null && !newAttrInfo.getAttributeName()
- .contains(OPERATION_TYPE_ATTRIBUTE)) {
+ attrType == null && !attrName
+ .contains(OPERATION_TYPE_ATTRIBUTE) && required) {
addSubtreeFilteringForChildNode(newAttrInfo);
}
if (tempFlagSet(FILTER_CONTENT_MATCH_FOR_LEAF_MASK) &&
@@ -1607,31 +1691,35 @@
interfaceJavaFileHandle =
generateInterfaceFile(interfaceJavaFileHandle, imports,
curNode, isAttributePresent);
- if (!(curNode instanceof RpcNotificationContainer)) {
- //Create builder interface file.
- if ((fileType & BUILDER_INTERFACE_MASK) != 0) {
- builderInterfaceJavaFileHandle =
- getJavaFileHandle(getJavaClassName(
- BUILDER_INTERFACE_FILE_NAME_SUFFIX));
- builderInterfaceJavaFileHandle =
- generateBuilderInterfaceFile(
- builderInterfaceJavaFileHandle,
- curNode, isAttributePresent);
+ //Create builder interface file.
+ if ((fileType & BUILDER_INTERFACE_MASK) != 0) {
+ builderInterfaceJavaFileHandle =
+ getJavaFileHandle(getJavaClassName(
+ BUILDER_INTERFACE_FILE_NAME_SUFFIX));
+ builderInterfaceJavaFileHandle =
+ generateBuilderInterfaceFile(
+ builderInterfaceJavaFileHandle,
+ curNode, isAttributePresent);
/*
* Append builder interface file to interface file and
* close it.
*/
- mergeJavaFiles(builderInterfaceJavaFileHandle,
- interfaceJavaFileHandle);
- }
+ mergeJavaFiles(builderInterfaceJavaFileHandle,
+ interfaceJavaFileHandle);
}
+
insertDataIntoJavaFile(interfaceJavaFileHandle, CLOSE_CURLY_BRACKET);
validateLineLength(interfaceJavaFileHandle);
if (curNode instanceof YangAugmentableNode) {
addImportsForAugmentableClass(imports, false, true, curNode);
}
}
+
+ if (!curNode.isOpTypeReq() && curNode instanceof YangCase) {
+ removeCaseParentImport(curNode, imports);
+ }
+
if ((fileType & BUILDER_CLASS_MASK) != 0 ||
(fileType & DEFAULT_CLASS_MASK) != 0) {
if (isAttributePresent) {
@@ -1642,7 +1730,9 @@
addBitsAndBase64Imports(curNode, imports);
if (curNode instanceof YangAugmentableNode) {
addImportsForAugmentableClass(imports, true, false, curNode);
- addInvocationExceptionImport(imports);
+ if (curNode.isOpTypeReq()) {
+ addInvocationExceptionImport(imports);
+ }
}
sortImports(imports);
@@ -1675,6 +1765,15 @@
freeTemporaryResources(false);
}
+ //Removes case's parent import.
+ private void removeCaseParentImport(YangNode node, List<String> imports) {
+ YangNode parent = node.getParent();
+ JavaFileInfo info = ((JavaFileInfoContainer) parent).getJavaFileInfo();
+ String impt = getImportString(info.getPackage(),
+ getCapitalCase(info.getJavaName()));
+ imports.remove(impt);
+ }
+
//Adds import for array list.
private void addArrayListImport(List<String> imports) {
if (imports.contains(javaImportData.getImportForList())) {
@@ -1686,7 +1785,7 @@
private void addBitsAndBase64Imports(YangNode curNode, List<String> imports) {
if (curNode instanceof YangLeavesHolder) {
YangLeavesHolder holder = (YangLeavesHolder) curNode;
- String impt = this.getJavaImportData()
+ String impt = getJavaImportData()
.getImportForToBitSet();
if (!holder.getListOfLeaf().isEmpty() &&
!imports.contains(impt)) {
@@ -1939,4 +2038,22 @@
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
+ */
+ public void setBinary(boolean binary) {
+ isBinary = binary;
+ }
+
+ /**
+ * Returns true if binary type is there for leaf/leaf-list.
+ *
+ * @return true if binary type is there for leaf/leaf-list
+ */
+ public boolean isBinary() {
+ return isBinary;
+ }
+
}
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 1751ab5..474594d 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
@@ -148,18 +148,11 @@
*/
private void addRpcString(JavaAttributeInfo inAttr, JavaAttributeInfo outAttr,
String rpcName) throws IOException {
- String rpcInput = EMPTY_STRING;
- String rpcOutput = VOID;
- String rpcIn = EMPTY_STRING;
- if (inAttr != null) {
- rpcInput = getCapitalCase(inAttr.getAttributeName());
- }
- if (outAttr != null) {
- rpcOutput = getCapitalCase(outAttr.getAttributeName());
- }
- if (!rpcInput.equals(EMPTY_STRING)) {
- rpcIn = RPC_INPUT_VAR_NAME;
- }
+ 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;
appendToFile(rpcInterfaceTempFileHandle,
generateJavaDocForRpc(rpcName, rpcIn, rpcOutput) +
getRpcServiceMethod(rpcName, rpcInput, rpcOutput));
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 a30ed4b..431cf19 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
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.List;
+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.datamodel.utils.builtindatatype.YangDataTypes.INT16;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
@@ -51,7 +52,9 @@
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.LONG_TYPE_CONFLICT;
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
+import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -264,6 +267,15 @@
if (type.getDataType() == BITS) {
addBitsHandler(javaAttributeInfo, type, this);
}
+ if (type.getDataType() == BINARY) {
+ JavaQualifiedTypeInfoTranslator info = new
+ JavaQualifiedTypeInfoTranslator();
+ info.setClassInfo(BASE64);
+ info.setPkgInfo(JAVA_UTIL_PKG);
+ getJavaImportData().addImportInfo(
+ info, getGeneratedJavaClassName(), getJavaFileInfo()
+ .getPackage());
+ }
addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo,
config, types);
}
@@ -603,7 +615,7 @@
}
createPackage(curNode);
- addImportsToStringAndHasCodeMethods(imports, true);
+ imports.add(getJavaImportData().getImportForHashAndEquals());
/*
* Creates type def class file.
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 2c019f6..0a433ee 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
@@ -38,6 +38,7 @@
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -45,7 +46,10 @@
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.addCurNodeInfoInParentTempFile;
+import static org.onosproject.yangutils.translator.tojava.utils.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;
@@ -54,13 +58,17 @@
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.HYPHEN;
import static org.onosproject.yangutils.utils.UtilConstants.INPUT_KEYWORD;
import static org.onosproject.yangutils.utils.UtilConstants.OUTPUT_KEYWORD;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.addPackageInfo;
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.getPackageDirPathFromJavaJPackage;
+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;
/**
* Represents utility class for YANG java model.
@@ -233,6 +241,11 @@
}
}
if (info instanceof YangLeavesHolder) {
+ YangLeavesHolder holder = (YangLeavesHolder) info;
+ boolean isLeafPresent = holder.getListOfLeaf() != null && !holder
+ .getListOfLeaf().isEmpty();
+ boolean isLeafListPresent = holder.getListOfLeafList() != null &&
+ !holder.getListOfLeafList().isEmpty();
/*
* Container
* Case
@@ -242,12 +255,23 @@
* Notification
* Output
*/
- getBeanFiles(info).addCurNodeLeavesInfoToTempFiles((YangNode) info,
+ if (isLeafPresent || isLeafListPresent) {
+ getBeanFiles(info).addCurNodeLeavesInfoToTempFiles((YangNode) info,
+ config);
+ }
+ //Add value leaf flag attribute to temp file.
+ if (isLeafPresent) {
+ getBeanFiles(info).addValueLeafFlag(config, (YangNode) info);
+ }
+ if (((YangNode) info).isOpTypeReq()) {
+ // Add operation type as an attribute.
+ getBeanFiles(info).addOperationTypeToTempFiles((YangNode) info,
config);
-
- // Add operation type as an attribute.
- getBeanFiles(info).addOperationTypeToTempFiles((YangNode) info,
- config);
+ if (isLeafPresent) {
+ //Add select leaf flag attribute to temp file.
+ getBeanFiles(info).addSelectLeafFlag(config);
+ }
+ }
} else if (info instanceof YangTypeHolder) {
/*
* Typedef
@@ -381,7 +405,7 @@
*/
private static YangSchemaNode getRefSchema(JavaCodeGeneratorInfo info) {
- YangSchemaNode node = ((YangSchemaNode) info);
+ YangSchemaNode node = (YangSchemaNode) info;
if (node.getReferredSchema() == null) {
return null;
}
@@ -416,7 +440,9 @@
generateCodeOfNode(info, config);
TempJavaCodeFragmentFiles tempFiles =
info.getTempJavaCodeFragmentFiles();
-
+ if (!(info instanceof YangChoice)) {
+ getBeanFiles(info).addYangAugmentedMap(config);
+ }
if (info instanceof YangCase) {
YangNode parent = ((YangCase) info).getParent();
JavaQualifiedTypeInfoTranslator typeInfo =
@@ -658,9 +684,9 @@
String name = getCapitalCase(getCamelCase(identifier.getName(),
config.getConflictResolver()));
if (identifier.getPrefix() != null) {
- return AUGMENTED + getCapitalCase(
- getCamelCase(identifier.getPrefix(),
- config.getConflictResolver())) + name;
+ return getCapitalCase(getCamelCase(AUGMENTED + HYPHEN + identifier
+ .getPrefix(),
+ config.getConflictResolver())) + name;
}
return AUGMENTED + name;
}
@@ -672,14 +698,41 @@
* @param node current YANG node
* @throws IOException when fails to generate java files
*/
- public static void generateJava(int type, YangNode node)
+ public static void generateJava(int type, YangNode node)
throws IOException {
/*
* Call for file generation if node is not under uses.
*/
- if(node.getReferredSchema() == null) {
+ if (node.getReferredSchema() == null) {
((TempJavaCodeFragmentFilesContainer) node)
- .getTempJavaCodeFragmentFiles().generateJavaFile(type, node);
+ .getTempJavaCodeFragmentFiles().generateJavaFile(type, node);
}
}
+
+ /**
+ * Generates interface file for those yang file which contains only any
+ * of these grouping, typedef and identity.
+ *
+ * @param rootNode root node
+ * @throws IOException when fails to do IO operations
+ */
+ public static void generateInterfaceFileForNonDataNodes(YangNode rootNode) throws
+ IOException {
+ JavaCodeGeneratorInfo info = (JavaCodeGeneratorInfo) rootNode;
+ TempJavaCodeFragmentFiles tempFile = info
+ .getTempJavaCodeFragmentFiles();
+ JavaFileInfoTranslator fileInfo = info.getJavaFileInfo();
+ File filePath = new File(fileInfo.getBaseCodeGenPath() + fileInfo
+ .getPackageFilePath());
+ String name = getCapitalCase(fileInfo.getJavaName());
+ //Add package info file for this.
+ addPackageInfo(filePath, name, fileInfo.getPackage(), false);
+ //Generate file handle for this.
+ File interFace = tempFile.getBeanTempFiles().getJavaFileHandle(
+ name);
+ //generate java code for interface file.
+ validateLineLength(generateInterfaceFile(interFace, null, rootNode,
+ false));
+ insertDataIntoJavaFile(interFace, methodClose(FOUR_SPACE));
+ }
}
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
index 2d70219..00d7a19 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
@@ -532,7 +532,7 @@
* @param isList true if list, false otherwise
* @return import class
*/
- private static String getLeafRefImpClass(
+ public static String getLeafRefImpClass(
YangType type, YangToJavaNamingConflictUtil cnfg, boolean isList) {
YangType<?> rt = getReferredTypeFromLeafref(type);
return rt == null ? OBJECT_STRING : getJavaImportClass(rt, isList,
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
index 1607b9f..ca964f1 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
@@ -15,8 +15,6 @@
*/
package org.onosproject.yangutils.translator.tojava.javamodel;
-import java.io.IOException;
-
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaAugment;
import org.onosproject.yangutils.translator.exception.TranslatorException;
@@ -26,8 +24,10 @@
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import java.io.IOException;
+
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfNode;
/**
* Represents augment information extended to support java code generation.
@@ -109,7 +109,7 @@
@Override
public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
try {
- generateCodeOfAugmentableNode(this, yangPlugin);
+ generateCodeOfNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException("Failed to generate code for augmentable node " +
getName() + " in " +
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 e0b0dad..668b1e9 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
@@ -34,6 +34,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfRootNode;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateInterfaceFileForNonDataNodes;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isRootNodesCodeGenRequired;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.FAIL_AT_ENTRY;
@@ -168,7 +169,9 @@
GENERATE_ALL_EVENT_CLASS_MASK, this);
}
- if (isRootNodesCodeGenRequired(this)) {
+ if (!isRootNodesCodeGenRequired(this)) {
+ generateInterfaceFileForNonDataNodes(this);
+ } else {
getTempJavaCodeFragmentFiles()
.generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
if (getJavaFileInfo().getPluginConfig()
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 20fa8d2..62f2962 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
@@ -35,6 +35,7 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfRootNode;
+import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateInterfaceFileForNonDataNodes;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.isRootNodesCodeGenRequired;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorErrorType.FAIL_AT_ENTRY;
@@ -180,7 +181,9 @@
getTempJavaCodeFragmentFiles().generateJavaFile(
GENERATE_ALL_EVENT_CLASS_MASK, this);
}
- if (isRootNodesCodeGenRequired(this)) {
+ if (!isRootNodesCodeGenRequired(this)) {
+ generateInterfaceFileForNonDataNodes(this);
+ } else {
getTempJavaCodeFragmentFiles()
.generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
if (getJavaFileInfo().getPluginConfig()
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 4c711bf..9abd058 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -164,8 +164,7 @@
* @return enum file class definition
*/
private static String getEnumClassDefinition(String yangName) {
- return trimAtLast(getDefaultDefinition(ENUM, yangName, PUBLIC),
- NEW_LINE);
+ return getDefaultDefinition(ENUM, yangName, PUBLIC);
}
/**
@@ -223,9 +222,6 @@
return clsDef;
}
}
- if (curNode instanceof RpcNotificationContainer) {
- return getDefaultDefinition(CLASS, bName, mod);
- }
return getDefaultDefinitionWithImpl(CLASS, bName, mod,
getBuilderImplStringClassDef(yangName));
}
@@ -409,11 +405,9 @@
.append(SPACE).append(EXTEND).append(SPACE);
def = new StringBuilder(getDefinitionString(def.toString(),
holder));
- if (!(curNode instanceof RpcNotificationContainer)) {
- def.append(SPACE).append(IMPLEMENTS).append(SPACE)
- .append(yangName).append(PERIOD)
- .append(yangName).append(BUILDER);
- }
+ def.append(SPACE).append(IMPLEMENTS).append(SPACE)
+ .append(yangName).append(PERIOD)
+ .append(yangName).append(BUILDER);
break;
case DEFAULT_CLASS_MASK:
if (curNode instanceof RpcNotificationContainer) {
diff --git a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/IndentationType.java b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/IndentationType.java
index 3b7b09c..e49bc4b 100644
--- a/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/IndentationType.java
+++ b/generator/src/main/java/org/onosproject/yangutils/translator/tojava/utils/IndentationType.java
@@ -19,7 +19,7 @@
/**
* Represents indentation type.
*/
-enum IndentationType {
+public enum IndentationType {
//Four space indentation.
FOUR_SPACE,
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 916dd42..96db5c3 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,9 +27,7 @@
import java.util.List;
import static java.util.Collections.sort;
-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_DIAMOND;
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;
@@ -37,7 +35,6 @@
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.CLASS_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
@@ -53,19 +50,17 @@
import static org.onosproject.yangutils.utils.UtilConstants.LIST;
import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE_ATTR;
-import static org.onosproject.yangutils.utils.UtilConstants.MAP;
import static org.onosproject.yangutils.utils.UtilConstants.NEW;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-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_CLOSE_DIAMOND_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
-import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
-import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
+import static org.onosproject.yangutils.utils.UtilConstants.SELECT_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
import static org.onosproject.yangutils.utils.UtilConstants.SET;
import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
@@ -80,7 +75,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE_ATTR;
-import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_LOWER_CASE;
+import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUGMENTED_INFO_MAP;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.enumJavaDocForInnerClass;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
@@ -147,8 +143,20 @@
}
attrDef.append(attrType).append(SPACE)
- .append(attrName).append(SEMI_COLON)
- .append(NEW_LINE);
+ .append(attrName);
+ //Initialize select leaf/value leaf/ augment map attribute.
+ if (attrName.equals(SELECT_LEAF) || attrName.equals(VALUE_LEAF)) {
+ attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+ .append(SPACE).append(BIT_SET)
+ .append(OPEN_CLOSE_BRACKET_STRING);
+ } else if (attrName.equals(YANG_AUGMENTED_INFO_MAP)) {
+ attrDef.append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+ .append(SPACE).append(HASH_MAP)
+ .append(OPEN_CLOSE_DIAMOND_STRING)
+ .append(OPEN_CLOSE_BRACKET_STRING);
+ }
+
+ attrDef.append(signatureClose());
} else {
// Add starting definition.
addAttrStartDef(annotation, attrDef);
@@ -208,13 +216,11 @@
if (annotation != null &&
annotation.getYangAppDataStructure() != null) {
attrDef.append(DIAMOND_CLOSE_BRACKET).append(SPACE)
- .append(attrName).append(SEMI_COLON)
- .append(NEW_LINE);
+ .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(SEMI_COLON)
- .append(NEW_LINE);
+ .append(SPACE).append(ARRAY_LIST).append(signatureClose());
}
}
@@ -327,32 +333,6 @@
}
/**
- * Returns attribute for augmentation.
- *
- * @return attribute for augmentation
- */
- static String addAugmentationAttribute() {
- String[] array = {NEW_LINE, SEMI_COLON};
- return trimAtLast(getJavaAttributeDefinition(
- null, getAugmentMapTypeString(),
- YANG_AUGMENTED_INFO_LOWER_CASE + MAP, false, PROTECTED,
- null), array) + SPACE + EQUAL + SPACE + NEW + SPACE +
- HASH_MAP + brackets(OPEN_CLOSE_DIAMOND, null, null) + brackets(
- OPEN_CLOSE_BRACKET, null, null) + signatureClose();
- }
-
- /**
- * Returns augment map return type.
- *
- * @return augment map return type
- */
- static String getAugmentMapTypeString() {
- return MAP + DIAMOND_OPEN_BRACKET + CLASS_STRING + DIAMOND_OPEN_BRACKET +
- QUESTION_MARK + DIAMOND_CLOSE_BRACKET + COMMA + SPACE +
- OBJECT_STRING + DIAMOND_CLOSE_BRACKET;
- }
-
- /**
* Adds attribute for int ranges.
*
* @param modifier modifier for attribute
@@ -437,7 +417,7 @@
" * Applicable in protocol edit operation, not applicable" +
" in query operation\n" +
" */\n" +
- " public enum OnosYangNodeOperationType {\n" +
+ " public static enum OnosYangOpType {\n" +
" MERGE,\n" +
" REPLACE,\n" +
" CREATE,\n" +
@@ -448,36 +428,6 @@
}
/**
- * Returns operation type enum, leaf value set attribute and select leaf
- * attribute.
- *
- * @return operation attributes for value and select leaf flags
- */
- static String getOperationAttributes() {
- return " /**\n" +
- " * Identify the leafs whose value are explicitly set\n" +
- " * Applicable in protocol edit and query operation\n" +
- " */\n" +
- " private BitSet valueLeafFlags = new BitSet();\n" +
- "\n" +
- " /**\n" +
- " * Identify the leafs to be selected, in a query operation\n" +
- " */\n" +
- " private BitSet selectLeafFlags = new BitSet();\n";
- }
-
- /**
- * Returns operation type enum, leaf value set attribute and select leaf
- * attribute for constructor.
- *
- * @return operation attributes for constructor
- */
- static String getOperationAttributeForConstructor() {
- return " this.valueLeafFlags = builderObject.getValueLeafFlags();\n" +
- " this.selectLeafFlags = builderObject.getSelectLeafFlags();\n";
- }
-
- /**
* Returns attribute in constructor for yang augmented info map.
*
* @return augment info map
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 979df3a..2033d2d 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
@@ -85,16 +85,12 @@
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.addAugmentationAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEventEnumTypeStart;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributeForConstructor;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationAttributes;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getOperationTypeEnum;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getSetValueParaForUnionClass;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getYangAugmentedMapObjectForConstruct;
-import static org.onosproject.yangutils.translator.tojava.utils.BitsJavaInfoHandler.generateBitsFile;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getDataFromTempFileHandle;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.ENUM_METHOD_INT_VALUE;
@@ -120,20 +116,20 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRangeValidatorMethodForUnion;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForSelectLeaf;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringForEnumClass;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringForType;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodClose;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethodOpen;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getUnionToStringMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoImpl;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoInterface;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoMapImpl;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getYangAugmentInfoMapInterface;
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.getGettersForValueAndSelectLeaf;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getInterfaceLeafIdEnumMethods;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOperationAttributesGetters;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIsSelectLeafSet;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIsValueLeafSet;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getAugmentableSubTreeFiltering;
@@ -169,14 +165,13 @@
import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_METHOD_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.TYPEDEF_CLASS;
import static org.onosproject.yangutils.utils.UtilConstants.UNION_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
+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.insertDataIntoJavaFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.replaceLast;
@@ -234,8 +229,9 @@
className);
// Generate ENUM interface
- insertDataIntoJavaFile(file, getOperationTypeEnum());
-
+ if (curNode instanceof RpcNotificationContainer) {
+ insertDataIntoJavaFile(file, getOperationTypeEnum());
+ }
List<String> methods = new ArrayList<>();
if (attrPresent) {
// Add getter methods to interface file.
@@ -263,23 +259,25 @@
if (curNode instanceof YangAugmentableNode &&
!(curNode instanceof YangChoice)) {
methods.add(getYangAugmentInfoInterface());
- methods.add(getYangAugmentInfoMapInterface());
}
-
- 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 (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());
- methods.add(isSelectLeafSetInterface());
+ if (curNode.isOpTypeReq()) {
+ methods.add(isSelectLeafSetInterface());
+ }
}
for (String method : methods) {
insertDataIntoJavaFile(file, method);
@@ -305,7 +303,8 @@
boolean leavesPresent;
YangLeavesHolder leavesHolder;
- if (curNode instanceof YangLeavesHolder) {
+ if (curNode instanceof YangLeavesHolder &&
+ curNode.isOpTypeReq()) {
leavesHolder = (YangLeavesHolder) curNode;
leavesPresent = leavesPresent(leavesHolder);
} else {
@@ -347,9 +346,8 @@
if (curNode instanceof YangAugmentableNode &&
!(curNode instanceof YangChoice)) {
- methods.add(getAddAugmentInfoMethodInterface());
+ methods.add(getAddAugmentInfoMethodInterface(className + BUILDER));
methods.add(getYangAugmentInfoInterface());
- methods.add(getYangAugmentInfoMapInterface());
}
if (leavesPresent) {
@@ -395,10 +393,8 @@
}
String className = getCapitalCase(fileInfo.getJavaName());
- boolean isRootNode = false;
String path;
if (curNode instanceof RpcNotificationContainer) {
- isRootNode = true;
path = fileInfo.getPluginConfig().getCodeGenDir() +
fileInfo.getPackageFilePath();
} else {
@@ -409,10 +405,6 @@
initiateJavaFileGeneration(file, BUILDER_CLASS_MASK, null, curNode,
className);
List<String> methods = new ArrayList<>();
-
- if (curNode instanceof YangAugmentableNode) {
- insertDataIntoJavaFile(file, addAugmentationAttribute());
- }
if (attrPresent) {
//Add attribute strings.
@@ -422,10 +414,6 @@
} catch (IOException e) {
throw new IOException(getErrorMsg(className, BUILDER_CLASS));
}
-
- if (leavesPresent) {
- insertDataIntoJavaFile(file, getOperationAttributes());
- }
try {
//Getter methods.
methods.add(getDataFromTempFileHandle(
@@ -441,10 +429,9 @@
insertDataIntoJavaFile(file, NEW_LINE);
//Add operation attribute methods.
- if (leavesPresent) {
- methods.add(getOperationAttributesGetters());
+ if (leavesPresent && curNode.isOpTypeReq()) {
insertDataIntoJavaFile(file, NEW_LINE);
- methods.add(getSetterForSelectLeaf(className, isRootNode));
+ methods.add(getSetterForSelectLeaf(className));
}
} catch (IOException e) {
throw new IOException(getErrorMsg(className, BUILDER_CLASS));
@@ -454,9 +441,8 @@
}
if (curNode instanceof YangAugmentableNode) {
- methods.add(getAddAugmentInfoMethodImpl());
+ methods.add(getAddAugmentInfoMethodImpl(className + BUILDER));
methods.add(getYangAugmentInfoImpl());
- methods.add(getYangAugmentInfoMapImpl());
}
// Add default constructor and build method impl.
@@ -520,64 +506,52 @@
className);
List<String> methods = new ArrayList<>();
- if (curNode instanceof YangAugmentableNode) {
- insertDataIntoJavaFile(file, addAugmentationAttribute());
- }
if (attrPresent) {
addDefaultClassAttributeInfo(file, curNode, className,
opParamClassName, path, methods,
- leavesPresent, rootNode);
+ rootNode);
} else {
insertDataIntoJavaFile(file, NEW_LINE);
}
if (curNode instanceof YangAugmentableNode) {
methods.add(getYangAugmentInfoImpl());
- methods.add(getYangAugmentInfoMapImpl());
}
try {
//Constructor.
- String constructor =
- getConstructorStart(className, rootNode);
- constructor = constructor +
+ String constructor = getConstructorStart(className, rootNode) +
getDataFromTempFileHandle(
- CONSTRUCTOR_IMPL_MASK, getBeanFiles(curNode), path);
-
- if (leavesPresent) {
- constructor = constructor +
- getOperationAttributeForConstructor();
- }
- String augmentableSubTreeFiltering = EMPTY_STRING;
- if (curNode instanceof YangAugmentableNode) {
- constructor = constructor +
- getYangAugmentedMapObjectForConstruct();
-
- // add is filter content match.
- augmentableSubTreeFiltering = getAugmentableSubTreeFiltering();
- }
- methods.add(constructor + methodClose(FOUR_SPACE));
-
- methods.add(getProcessSubtreeFilteringStart(curNode, config) +
- getProcessSubtreeFunctionBody(curNode) +
- augmentableSubTreeFiltering +
- getProcessSubTreeFilteringEnd());
-
- if (curNode instanceof YangLeavesHolder) {
- if (((YangLeavesHolder) curNode).getListOfLeaf() != null &&
- !((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) {
- methods.add(getProcessLeafSubtreeFiltering(curNode, config,
- path));
+ CONSTRUCTOR_IMPL_MASK, getBeanFiles(curNode), path)
+ + methodClose(FOUR_SPACE);
+ methods.add(constructor);
+ if (curNode.isOpTypeReq()) {
+ String augmentableSubTreeFiltering = EMPTY_STRING;
+ if (curNode instanceof YangAugmentableNode) {
+ // add is filter content match.
+ augmentableSubTreeFiltering = getAugmentableSubTreeFiltering();
}
- if (((YangLeavesHolder) curNode).getListOfLeafList() != null &&
- !((YangLeavesHolder) curNode).getListOfLeafList().isEmpty()) {
- methods.add(getProcessLeafListSubtreeFiltering(curNode, config,
+ methods.add(getProcessSubtreeFilteringStart(curNode, config) +
+ getProcessSubtreeFunctionBody(curNode) +
+ augmentableSubTreeFiltering +
+ getProcessSubTreeFilteringEnd());
+
+ if (curNode instanceof YangLeavesHolder) {
+ if (((YangLeavesHolder) curNode).getListOfLeaf() != null &&
+ !((YangLeavesHolder) curNode).getListOfLeaf().isEmpty()) {
+ methods.add(getProcessLeafSubtreeFiltering(curNode, config,
path));
+ }
+ if (((YangLeavesHolder) curNode).getListOfLeafList() != null &&
+ !((YangLeavesHolder) curNode).getListOfLeafList().isEmpty()) {
+ methods.add(getProcessLeafListSubtreeFiltering(curNode, config,
+ path));
+ }
}
- }
- if (curNode.getChild() != null) {
- methods.add(getProcessChildNodeSubtreeFiltering(curNode, config,
- path));
+ if (curNode.getChild() != null) {
+ methods.add(getProcessChildNodeSubtreeFiltering(curNode, config,
+ path));
+ }
}
} catch (IOException e) {
throw new IOException(getErrorMsg(className, IMPL_CLASS));
@@ -587,8 +561,10 @@
methods.add(builderMethod(className));
if (leavesPresent) {
- methods.add(getOperationAttributesGetters());
- methods.add(getGettersForValueAndSelectLeaf());
+ methods.add(getIsValueLeafSet());
+ if (curNode.isOpTypeReq()) {
+ methods.add(getIsSelectLeafSet());
+ }
}
// Add methods in impl class.
for (String method : methods) {
@@ -607,7 +583,6 @@
* @param opParamClassName op param class name
* @param path file path
* @param methods list of methods string
- * @param leavesPresent flag indicating presence of leaves
* @param rootNode flag indicating whether node is root node
* @throws IOException a violation in IO rule
*/
@@ -615,7 +590,6 @@
String className,
String opParamClassName,
String path, List<String> methods,
- boolean leavesPresent,
boolean rootNode)
throws IOException {
@@ -627,11 +601,6 @@
throw new IOException(getErrorMsg(className, IMPL_CLASS));
}
- //Add operation attributes
- if (leavesPresent) {
- insertDataIntoJavaFile(file, getOperationAttributes());
- }
-
try {
//Getter methods.
methods.add(getDataFromTempFileHandle(
@@ -786,10 +755,13 @@
List<String> methods, String path)
throws IOException {
//To string method.
- methods.add(getToStringMethodOpen() +
- getDataFromTempFileHandle(
- TO_STRING_IMPL_MASK, getTypeFiles(curNode), path) +
- getToStringMethodClose());
+
+ 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);
@@ -904,7 +876,7 @@
//To string method.
methods.add(getUnionToStringMethod(
- ((YangUnion) curNode).getTypeList()));
+ ((YangUnion) curNode).getTypeList(), getCapitalCase(className)));
for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
.getBitsHandler()) {
@@ -1009,8 +981,6 @@
if (!enumFile.isEnumClass()) {
imports.add(data.getImportForToBitSet());
imports.add(data.getImportForPattern());
- imports.add(data.getImportForToString());
-
}
initiateJavaFileGeneration(file, getCapitalCase(className),
@@ -1052,16 +1022,13 @@
null) +
getGetter(INT, className, GENERATE_ENUM_CLASS) + NEW_LINE);
- insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, SCHEMA_NAME, false,
- null) +
- getGetter(STRING_DATA_TYPE, SCHEMA_NAME, GENERATE_ENUM_CLASS) +
- NEW_LINE);
-
if (!enumFile.isEnumClass()) {
insertDataIntoJavaFile(file, getBitSetEnumClassFromString
(getCapitalCase(className)));
insertDataIntoJavaFile(file, getBitSetEnumClassToString(
getCapitalCase(className), (YangEnumeration) curNode));
+ } else {
+ insertDataIntoJavaFile(file, getToStringForEnumClass());
}
insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
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 e22465c..818351d 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
@@ -21,6 +21,7 @@
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;
@@ -98,11 +99,11 @@
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILDER_INTERFACE;
+import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_LISTENER;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.EVENT_SUBJECT_CLASS;
-import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.IMPL_CLASS;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.INTERFACE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.RPC_INTERFACE;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
@@ -452,7 +453,7 @@
break;
case DEFAULT_CLASS_MASK:
appendHeaderContents(file, pkgString, importsList);
- write(file, genType, IMPL_CLASS, curNode, className);
+ write(file, genType, DEFAULT_CLASS, curNode, className);
break;
case BUILDER_CLASS_MASK:
write(file, genType, BUILDER_CLASS, curNode, className);
@@ -505,11 +506,11 @@
switch (genType) {
case GENERATE_TYPEDEF_CLASS:
appendHeaderContents(file, pkgString, importsList);
- write(file, fileName, genType, IMPL_CLASS);
+ write(file, fileName, genType, DEFAULT_CLASS);
break;
case GENERATE_UNION_CLASS:
appendHeaderContents(file, pkgString, importsList);
- write(file, fileName, genType, IMPL_CLASS);
+ write(file, fileName, genType, DEFAULT_CLASS);
break;
case GENERATE_ENUM_CLASS:
appendHeaderContents(file, pkgString, importsList);
@@ -664,6 +665,15 @@
*/
public static void addResolvedAugmentedDataNodeImports(YangNode parent) {
List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
+ if (targets.isEmpty()) {
+ return;
+ }
+
+ YangNode node = targets.get(0).getResolvedNode();
+ if (node instanceof YangNotification) {
+ return;
+ }
+
TempJavaCodeFragmentFiles tempJavaCodeFragmentFiles = (
(JavaCodeGeneratorInfo) parent)
.getTempJavaCodeFragmentFiles();
@@ -795,7 +805,7 @@
YangType<?> attributeType) {
if (attributeName.equalsIgnoreCase(LEAFREF)) {
YangLeafRef leafRef = (YangLeafRef) attributeType.getDataTypeExtendedInfo();
- if (!leafRef.isInGrouping()) {
+ if (leafRef != null && !leafRef.isInGrouping()) {
return attributeType.getDataTypeName();
}
}
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 a35ea24..77bf0f2 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
@@ -20,7 +20,9 @@
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;
@@ -39,13 +41,11 @@
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;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getAugmentMapTypeString;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getCurNodeName;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.AUGMENTED_MAP_ADD;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.AUGMENTED_MAP_GETTER;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.AUGMENTED_MAP_GET_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.GETTER;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.MANAGER_METHODS;
@@ -62,7 +62,6 @@
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin;
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.getMoreObjectAttr;
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;
@@ -73,6 +72,8 @@
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnOfSubString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getSetValueParaCondition;
+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;
@@ -87,6 +88,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.ADD;
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.ARRAY_LIST;
import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
@@ -110,6 +112,7 @@
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.ENCODE_TO_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
@@ -121,11 +124,11 @@
import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.GET;
import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER;
+import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER;
import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.HASH;
import static org.onosproject.yangutils.utils.UtilConstants.HASH_CODE_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.HELPER;
import static org.onosproject.yangutils.utils.UtilConstants.IF;
import static org.onosproject.yangutils.utils.UtilConstants.INSTANCE_OF;
import static org.onosproject.yangutils.utils.UtilConstants.INT;
@@ -133,7 +136,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
import static org.onosproject.yangutils.utils.UtilConstants.LONG;
-import static org.onosproject.yangutils.utils.UtilConstants.MAP;
import static org.onosproject.yangutils.utils.UtilConstants.MAX_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.NEW;
@@ -144,6 +146,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.OBJECT;
import static org.onosproject.yangutils.utils.UtilConstants.OBJECT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.OF;
+import static org.onosproject.yangutils.utils.UtilConstants.OF_CAPS;
import static org.onosproject.yangutils.utils.UtilConstants.ONE;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
@@ -156,6 +159,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.PROCESS_SUBTREE_FILTERING;
import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
+import static org.onosproject.yangutils.utils.UtilConstants.QUESTION_MARK;
import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
@@ -170,6 +174,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS;
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.SUFFIX_S;
import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
@@ -327,16 +332,13 @@
/**
* Returns build method string.
*
- * @param name class name
- * @param isRootNode if root node
+ * @param name class name
+ * @param isRoot true if root node
* @return build string
*/
- public static String getBuildString(String name, boolean isRootNode) {
- if (isRootNode) {
- return NEW_LINE + getBuild(name, true);
- }
+ public static String getBuildString(String name, boolean isRoot) {
return FOUR_SPACE_INDENTATION + OVERRIDE + NEW_LINE +
- getBuild(name, false);
+ getBuild(name, isRoot);
}
/**
@@ -679,10 +681,7 @@
*/
public static String getRpcServiceMethod(String rpcName, String input,
String output) {
- String inputVal = EMPTY_STRING;
- if (!input.equals(EMPTY_STRING)) {
- inputVal = RPC_INPUT_VAR_NAME;
- }
+ String inputVal = input == null ? null : RPC_INPUT_VAR_NAME;
return methodSignature(rpcName, EMPTY_STRING, null,
inputVal, output, input, INTERFACE_TYPE) +
NEW_LINE;
@@ -842,7 +841,7 @@
}
/**
- * Returns to string converter for binary type.
+ * Returns from string converter for binary type.
*
* @param var variable name
* @return to string method body
@@ -856,6 +855,21 @@
}
/**
+ * Returns to string converter for binary type.
+ *
+ * @param var variable name
+ * @return to string method body
+ */
+ private static String getToStringForBinary(String var) {
+ StringBuilder builder = new StringBuilder();
+ 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();
+ }
+
+ /**
* Returns hash code method open strings.
*
* @return hash code method open string
@@ -1133,34 +1147,38 @@
/**
* Returns interface of add augmentation.
*
+ * @param className class name
* @return interface of add augmentation
*/
- static String getAddAugmentInfoMethodInterface() {
+ static String getAddAugmentInfoMethodInterface(String className) {
StringBuilder builder = new StringBuilder(generateForAddAugmentation());
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put(VALUE, OBJECT_STRING);
map.put(CLASS + OBJECT_STRING, CLASS_STRING);
builder.append(multiAttrMethodSignature(ADD_STRING + YANG_AUGMENTED_INFO,
EMPTY_STRING, EMPTY_STRING,
- VOID, map, INTERFACE_TYPE));
+ className, map, INTERFACE_TYPE));
return builder.toString();
}
/**
* Returns implementation of add augmentation.
*
+ * @param className class name
* @return implementation of add augmentation
*/
- static String getAddAugmentInfoMethodImpl() {
+ static String getAddAugmentInfoMethodImpl(String className) {
StringBuilder builder = new StringBuilder(getOverRideString());
LinkedHashMap<String, String> map = new LinkedHashMap<>();
map.put(VALUE, OBJECT_STRING);
map.put(CLASS + OBJECT_STRING, CLASS_STRING);
builder.append(multiAttrMethodSignature(ADD_STRING + YANG_AUGMENTED_INFO,
EMPTY_STRING, PUBLIC,
- VOID, map, CLASS_TYPE))
+ className, map, CLASS_TYPE))
.append(methodBody(AUGMENTED_MAP_ADD, null, null,
EIGHT_SPACE_INDENTATION, null, null, false, null))
+ .append(getReturnString(THIS, EIGHT_SPACE_INDENTATION))
+ .append(signatureClose())
.append(methodClose(FOUR_SPACE))
.append(NEW_LINE);
return builder.toString();
@@ -1194,34 +1212,6 @@
}
/**
- * Returns implementation of get YANG augment info.
- *
- * @return implementation of get YANG augment info
- */
- static String getYangAugmentInfoMapInterface() {
- return NEW_LINE +
- getJavaDoc(GETTER_METHOD, YANG_AUGMENTED_INFO_LOWER_CASE + MAP,
- false, null) +
- methodSignature(YANG_AUGMENTED_INFO_LOWER_CASE + MAP,
- EMPTY_STRING, null, null,
- getAugmentMapTypeString(), null, INTERFACE_TYPE);
- }
-
- /**
- * Returns implementation of get YANG augment info.
- *
- * @return implementation of get YANG augment info
- */
- static String getYangAugmentInfoMapImpl() {
- return getOverRideString() + methodSignature(
- YANG_AUGMENTED_INFO_LOWER_CASE + MAP, EMPTY_STRING, PUBLIC, null,
- getAugmentMapTypeString(), null, CLASS_TYPE) +
- methodBody(AUGMENTED_MAP_GETTER, null, null,
- EIGHT_SPACE_INDENTATION, null, null, false, null) +
- methodClose(FOUR_SPACE);
- }
-
- /**
* Returns enum's constructor.
*
* @param className enum's class name
@@ -1340,6 +1330,15 @@
*/
static String getAugmentsDataMethodForService(YangNode parent) {
List<YangAtomicPath> targets = getSetOfNodeIdentifiers(parent);
+ if (targets.isEmpty()) {
+ return EMPTY_STRING;
+ }
+ 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) {
+ return EMPTY_STRING;
+ }
YangNode augmentedNode;
String curNodeName;
String method;
@@ -1472,19 +1471,14 @@
/**
* Returns add to list method impl.
*
- * @param attr java attribute
- * @param name class name
- * @param isRoot is root
+ * @param attr java attribute
+ * @param name class name
* @return add to list method impl
*/
public static String getAddToListMethodImpl(JavaAttributeInfo attr,
- String name,
- boolean isRoot) {
+ String name) {
String attrName = attr.getAttributeName();
- String retString = EMPTY_STRING;
- if (!isRoot) {
- retString = getOverRideString();
- }
+ String retString = getOverRideString();
StringBuilder builder = new StringBuilder(retString);
builder.append(methodSignature(ADD_STRING + TO_CAPS +
getCapitalCase(attrName),
@@ -1625,20 +1619,15 @@
/**
* Returns setter for select leaf.
*
- * @param name name of node
- * @param isRootNode if root node
+ * @param name name of node
* @return setter for select leaf
*/
- static String getSetterForSelectLeaf(String name, boolean isRootNode) {
- String append = OVERRIDE;
- if (isRootNode) {
- append = EMPTY_STRING;
- }
+ static String getSetterForSelectLeaf(String name) {
return "\n" +
- " " + append + "\n" +
+ " " + OVERRIDE + "\n" +
" public " + name + BUILDER +
" selectLeaf(LeafIdentifier leaf) {\n" +
- " getSelectLeafFlags().set(leaf.getLeafIndex());\n" +
+ " selectLeafFlags.set(leaf.getLeafIndex());\n" +
" return this;\n" +
" }\n";
}
@@ -1687,30 +1676,101 @@
return sBuild.toString();
}
+
+ /**
+ * Returns to string method for typedef.
+ *
+ * @param attr attribute name
+ * @param className class name
+ * @return to string method for typedef
+ */
+ static String getToStringForType(String attr, YangType type,
+ String className) {
+ 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))
+ .append(signatureClose()).append(methodClose(FOUR_SPACE));
+ return builder.toString();
+ }
+
+ /**
+ * 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
+ */
+ private static String getToStringForSpecialType(String className, YangType type,
+ String name) {
+ switch (type.getDataType()) {
+ case INT8:
+ case INT16:
+ case INT32:
+ case INT64:
+ case UINT8:
+ case UINT16:
+ case UINT32:
+ return STRING_DATA_TYPE + PERIOD + VALUE + OF_CAPS + brackets(
+ OPEN_CLOSE_BRACKET_WITH_VALUE, name, null);
+
+ case BINARY:
+ return getToStringCall(getToStringForBinary(name));
+
+ case BITS:
+ return className + getCapitalCase(name) + PERIOD +
+ TO_STRING_METHOD + brackets(
+ OPEN_CLOSE_BRACKET_WITH_VALUE, name, null);
+
+ case BOOLEAN:
+ case EMPTY:
+ return name + SPACE + QUESTION_MARK + SPACE + getQuotedString(TRUE)
+ + SPACE + COLON + SPACE + getQuotedString(FALSE);
+
+ case LEAFREF:
+ YangLeafRef<?> lri = (YangLeafRef<?>) type.getDataTypeExtendedInfo();
+ YangType<?> rt = lri.isInGrouping() ? null : lri
+ .getEffectiveDataType();
+ return rt == null ? getToStringCall(name) :
+ getToStringForSpecialType(className, rt, name);
+
+ case ENUMERATION:
+ case INSTANCE_IDENTIFIER:
+ case UINT64:
+ case DECIMAL64:
+ case DERIVED:
+ case IDENTITYREF:
+ case UNION:
+ return getToStringCall(name);
+
+ default:
+ return name;
+ }
+ }
+
/**
* 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) {
+ static String getUnionToStringMethod(List<YangType<?>> types, String name) {
StringBuilder builder = new StringBuilder(getOverRideString());
builder.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, null,
- STRING_DATA_TYPE, null, CLASS_TYPE))
- .append(getMoreObjectAttr());
+ STRING_DATA_TYPE, null, CLASS_TYPE));
for (YangType type : types) {
builder.append(getIfConditionBegin(
EIGHT_SPACE_INDENTATION, getSetValueParaCondition(
- types.indexOf(type))))
- .append(TWELVE_SPACE_INDENTATION).append(HELPER).append(
- methodBody(TO_STRING, getCamelCase(type.getDataTypeName()
- , null), null, EMPTY_STRING, null, null, false, null))
+ types.indexOf(type)))).append(getReturnString(
+ getToStringForSpecialType(name, type,
+ getCamelCase(type.getDataTypeName(), null)),
+ TWELVE_SPACE_INDENTATION))
.append(signatureClose()).append(methodClose(EIGHT_SPACE));
}
- builder.append(getReturnString(HELPER, EIGHT_SPACE_INDENTATION))
- .append(PERIOD).append(TO_STRING_METHOD)
- .append(OPEN_CLOSE_BRACKET_STRING).append(signatureClose())
+ builder.append(getReturnString(NULL, EIGHT_SPACE_INDENTATION)).append(signatureClose())
.append(methodClose(FOUR_SPACE));
return builder.toString();
}
@@ -1726,13 +1786,21 @@
getFromStringForBits(className);
}
+ /**
+ * Returns to string method for bits type.
+ *
+ * @param className class name
+ * @param enumeration enumeration
+ * @return to string method
+ */
static String getBitSetEnumClassToString(String className,
YangEnumeration enumeration) {
StringBuilder builder = new StringBuilder();
- builder.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, BITS,
+ builder.append(methodSignature(TO_STRING_METHOD, null,
+ PUBLIC + SPACE + STATIC, BITS,
STRING_DATA_TYPE, BIT_SET, CLASS_TYPE))
- .append(getMoreObjectAttr());
+ .append(getStringBuilderAttr(EMPTY_STRING, EIGHT_SPACE_INDENTATION));
String condition;
String name;
for (YangEnum yangEnum : enumeration.getEnumSet()) {
@@ -1745,16 +1813,34 @@
builder.append(getIfConditionBegin(
EIGHT_SPACE_INDENTATION, condition))
- .append(TWELVE_SPACE_INDENTATION).append(HELPER).append(
- PERIOD).append(ADD_STRING).append(OPEN_PARENTHESIS)
- .append(getQuotedString(name)).append(COMMA).append(SPACE)
+ .append(TWELVE_SPACE_INDENTATION).append(STRING_BUILDER_VAR).append(
+ PERIOD).append(APPEND).append(OPEN_PARENTHESIS)
.append(getQuotedString(name)).append(CLOSE_PARENTHESIS)
+ .append(signatureClose())
+ .append(TWELVE_SPACE_INDENTATION).append(STRING_BUILDER_VAR).append(
+ PERIOD).append(APPEND).append(OPEN_PARENTHESIS)
+ .append(getQuotedString(SPACE)).append(CLOSE_PARENTHESIS)
.append(signatureClose()).append(methodClose(EIGHT_SPACE));
}
- builder.append(getReturnString(HELPER, EIGHT_SPACE_INDENTATION))
+ builder.append(getReturnString(STRING_BUILDER_VAR, EIGHT_SPACE_INDENTATION))
.append(PERIOD).append(TO_STRING_METHOD)
.append(OPEN_CLOSE_BRACKET_STRING).append(signatureClose())
.append(methodClose(FOUR_SPACE));
return builder.toString();
}
+
+ /**
+ * Returns to string method for enum class.
+ *
+ * @return to string method for enum class
+ */
+ static String getToStringForEnumClass() {
+ StringBuilder builder = new StringBuilder(getOverRideString());
+ builder.append(methodSignature(TO_STRING_METHOD, EMPTY_STRING,
+ PUBLIC, null, STRING_DATA_TYPE, null,
+ CLASS_TYPE));
+ builder.append(getReturnString(SCHEMA_NAME, EIGHT_SPACE_INDENTATION))
+ .append(signatureClose()).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 c0d05b0..9dfbf80 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
@@ -76,7 +76,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.GET;
-import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING;
+import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STATIC_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.IF;
import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
@@ -90,7 +90,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.LONG_MAX_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.LONG_MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.LONG_WRAPPER;
-import static org.onosproject.yangutils.utils.UtilConstants.MAP;
import static org.onosproject.yangutils.utils.UtilConstants.MORE_OBJ_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.NEW;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
@@ -127,6 +126,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER_VAR;
import static org.onosproject.yangutils.utils.UtilConstants.THIS;
import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
+import static org.onosproject.yangutils.utils.UtilConstants.TO_STRING_METHOD;
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_SPACE_INDENTATION;
@@ -138,7 +138,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
-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_UTILS_TODO;
import static org.onosproject.yangutils.utils.UtilConstants.ZERO;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
@@ -243,7 +243,7 @@
* @param type indentation type
* @return method close string
*/
- static String methodClose(IndentationType type) {
+ public static String methodClose(IndentationType type) {
switch (type) {
case EIGHT_SPACE:
return EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
@@ -288,6 +288,7 @@
String paramType, boolean isBuilderSetter, String setterVal) {
StringBuilder builder = new StringBuilder();
String body;
+ String cond;
switch (type) {
case GETTER:
return getReturnString(paraName, space);
@@ -325,18 +326,18 @@
signatureClose() + getReturnString(
THIS + signatureClose(), space);
case AUGMENTED_MAP_ADD:
- return space + YANG_AUGMENTED_INFO_LOWER_CASE + MAP +
+ return space + YANG_AUGMENTED_INFO_MAP +
PERIOD + PUT + OPEN_PARENTHESIS + CLASS +
OBJECT_STRING + COMMA + SPACE + VALUE +
CLOSE_PARENTHESIS + signatureClose();
case AUGMENTED_MAP_GET_VALUE:
return getReturnString(
- YANG_AUGMENTED_INFO_LOWER_CASE + MAP + PERIOD + GET +
+ YANG_AUGMENTED_INFO_MAP + PERIOD + GET +
brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, CLASS +
OBJECT_STRING, null) + signatureClose(),
space);
case AUGMENTED_MAP_GETTER:
- return getReturnString(YANG_AUGMENTED_INFO_LOWER_CASE + MAP +
+ return getReturnString(YANG_AUGMENTED_INFO_MAP +
signatureClose(), space);
case MANAGER_METHODS:
body = space + YANG_UTILS_TODO + NEW_LINE;
@@ -604,16 +605,24 @@
*
* @return getters for value and select leaf
*/
- static String getGettersForValueAndSelectLeaf() {
+ static String getIsValueLeafSet() {
return "\n" +
" @Override\n" +
" public boolean isLeafValueSet(LeafIdentifier leaf) {\n" +
- " return getValueLeafFlags().get(leaf.getLeafIndex());\n" +
+ " return valueLeafFlags.get(leaf.getLeafIndex());\n" +
" }\n" +
- "\n" +
- " @Override\n" +
+ "\n";
+ }
+
+ /**
+ * Returns is select leaf set.
+ *
+ * @return is select leaf set
+ */
+ static String getIsSelectLeafSet() {
+ return " @Override\n" +
" public boolean isSelectLeaf(LeafIdentifier leaf) {\n" +
- " return getSelectLeafFlags().get(leaf.getLeafIndex());\n" +
+ " return selectLeafFlags.get(leaf.getLeafIndex());\n" +
" }\n";
}
@@ -622,7 +631,7 @@
*
* @return getter methods for operation attributes
*/
- static String getOperationAttributesGetters() {
+ static String getValueLeafGetters() {
return "\n" +
" /**\n" +
" * Returns the valueLeafFlags.\n" +
@@ -632,8 +641,16 @@
" public BitSet getValueLeafFlags() {\n" +
" return valueLeafFlags;\n" +
" }\n" +
- "\n" +
- " /**\n" +
+ "\n";
+ }
+
+ /**
+ * Returns getter methods for operation attributes.
+ *
+ * @return getter methods for operation attributes
+ */
+ static String getSelectLeafGetters() {
+ return " /**\n" +
" * Returns the selectLeafFlags.\n" +
" *\n" +
" * @return value of selectLeafFlags\n" +
@@ -894,7 +911,7 @@
* @return value leaf flag setter
*/
static String getValueLeafSetString(String name) {
- return "\n valueLeafFlags.set(LeafIdentifier." +
+ return " valueLeafFlags.set(LeafIdentifier." +
name.toUpperCase() + ".getLeafIndex());\n";
}
@@ -932,7 +949,7 @@
* @return definition close string
*/
private static String defCloseString() {
- return SPACE + OPEN_CURLY_BRACKET + NEW_LINE + NEW_LINE;
+ return SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
}
/**
@@ -1180,14 +1197,28 @@
/**
* Returns more object attr for union to string method.
*
+ * @param name name of generate class
* @return more object attr for union to string method
*/
- static String getMoreObjectAttr() {
+ static String getMoreObjectAttr(String name) {
+ String cls = name + PERIOD + CLASS;
StringBuilder attr = new StringBuilder(EIGHT_SPACE_INDENTATION);
String[] array = {NEW_LINE};
- attr.append(MORE_OBJ_ATTR).append(GOOGLE_MORE_OBJECT_METHOD_STRING)
+ 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(
getOmitNullValueString(), array)).append(signatureClose());
return attr.toString();
}
+
+ /**
+ * Returns to string call.
+ *
+ * @param name name of attribute
+ * @return to string call for attribute
+ */
+ static String getToStringCall(String name) {
+ return name + PERIOD +
+ TO_STRING_METHOD + OPEN_CLOSE_BRACKET_STRING;
+ }
}
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 f7229a2..952334c 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
@@ -57,7 +57,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.CONTINUE;
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.OPEN_CLOSE_BRACKET_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;
@@ -68,8 +67,6 @@
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_SELECT_LEAF_FLAGS;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_VALUE_LEAF_FLAGS;
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;
@@ -79,7 +76,6 @@
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.MAP;
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;
@@ -87,6 +83,7 @@
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.OR_OPERATION;
@@ -96,6 +93,7 @@
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_LEAF;
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;
@@ -110,8 +108,10 @@
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;
@@ -144,7 +144,7 @@
attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
type);
return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
- + GET_VALUE_LEAF_FLAGS + OPEN_CLOSE_BRACKET_STRING +
+ + VALUE_LEAF +
PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS +
@@ -163,7 +163,7 @@
TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE +
EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE + ELSE +
SPACE + IF + SPACE + OPEN_PARENTHESIS +
- GET_SELECT_LEAF_FLAGS + OPEN_CLOSE_BRACKET_STRING +
+ SELECT_LEAF +
PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS + SPACE +
@@ -941,7 +941,7 @@
return EIGHT_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS +
OBJECT_STRING + SPACE + YANG_AUGMENTED_INFO_LOWER_CASE +
SPACE + COLON + SPACE + THIS + PERIOD +
- YANG_AUGMENTED_INFO_LOWER_CASE + MAP +
+ YANG_AUGMENTED_INFO_MAP +
OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD
+ VALUE + "s" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS +
CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET +
diff --git a/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index 6bfd9a8..d73a0d6 100644
--- a/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/generator/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -731,6 +731,10 @@
* Static attribute for of.
*/
public static final String OF = "of";
+ /**
+ * Static attribute for of.
+ */
+ public static final String OF_CAPS = "Of";
/**
* Static attribute for other.
@@ -848,6 +852,11 @@
public static final String OPEN_CLOSE_BRACKET_STRING = "()";
/**
+ * Static attribute for empty parameter function call.
+ */
+ public static final String OPEN_CLOSE_DIAMOND_STRING = "<>";
+
+ /**
* Static attribute for open curly bracket syntax.
*/
public static final String OPEN_CURLY_BRACKET = "{";
@@ -944,6 +953,16 @@
public static final String VALUE_LEAF_SET = "isLeafValueSet";
/**
+ * Static attribute for is valueLeafFlags method prefix.
+ */
+ public static final String VALUE_LEAF = "valueLeafFlags";
+
+ /**
+ * Static attribute for is selectLeafFlags method prefix.
+ */
+ public static final String SELECT_LEAF = "selectLeafFlags";
+
+ /**
* Static attribute for is isSelectLeaf method prefix.
*/
public static final String IS_SELECT_LEAF = "isSelectLeaf";
@@ -1120,6 +1139,11 @@
public static final String BIT_SET = "BitSet";
/**
+ * Augment map type.
+ */
+ public static final String AUGMENT_MAP_TYPE = "Map<Class<?>, Object>";
+
+ /**
* Byte java built in type.
*/
public static final String BYTE = "byte";
@@ -1452,6 +1476,12 @@
"MoreObjects.toStringHelper(getClass())";
/**
+ * Static attribute for to string method.
+ */
+ public static final String GOOGLE_MORE_OBJECT_METHOD_STATIC_STRING =
+ "MoreObjects.toStringHelper";
+
+ /**
* Static attribute for java utilities import package.
*/
public static final String JAVA_UTIL_PKG = "java.util";
@@ -1493,6 +1523,12 @@
"yangAugmentedInfo";
/**
+ * Static attribute for AugmentedInfo class.
+ */
+ public static final String YANG_AUGMENTED_INFO_MAP =
+ "yangAugmentedInfoMap";
+
+ /**
* Static attribute for augmented.
*/
public static final String AUGMENTED = "Augmented";
@@ -1732,7 +1768,7 @@
* Static attribute for YANG node operation type class.
*/
public static final String OPERATION_TYPE_CLASS =
- "OnosYangNodeOperationType";
+ "OnosYangOpType";
/**
* Static attribute for YANG node operation type attribute.
@@ -1823,6 +1859,14 @@
*/
public static final String ERROR_MSG_JAVA_IDENTITY = "Expected java " +
"identity instance node ";
+
+ /**
+ * Static attribute for error msg.
+ */
+ public static final String ERROR_MSG_FOR_AUGMENT_LINKING = "Augment " +
+ "linking does not support linking when path contains " +
+ "notification/grouping for path: ";
+
/**
* Static attribute for in.
*/
diff --git a/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index 7698d89..7d36c0f 100644
--- a/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -101,7 +101,7 @@
name = YangIoUtils.getSmallCase(name);
switch (type) {
- case IMPL_CLASS: {
+ case DEFAULT_CLASS: {
return generateForClass(name);
}
case BUILDER_CLASS: {
@@ -424,7 +424,28 @@
* @return javaDocs
*/
private static String generateForClass(String className) {
- return getJavaDocForClass(className, IMPL_CLASS_JAVA_DOC, EMPTY_STRING);
+ return getJavaDocForDefaultClass(className, IMPL_CLASS_JAVA_DOC, EMPTY_STRING);
+ }
+
+ private static String addFlagJavaDoc() {
+ return " *\n" +
+ " * <p>\n" +
+ " * valueLeafFlags identify the leafs whose value are " +
+ "explicitly set\n" +
+ " * Applicable in protocol edit and query operation.\n" +
+ " * </p>\n" +
+ " *\n" +
+ " * <p>\n" +
+ " * selectLeafFlags identify the leafs to be selected, in" +
+ " a query operation.\n" +
+ " * </p>\n" +
+ " *\n" +
+ " * <p>\n" +
+ " * Operation type specify the node specific operation in" +
+ " protocols like NETCONF.\n" +
+ " * Applicable in protocol edit operation, not applicable" +
+ " in query operation.\n" +
+ " * </p>\n";
}
/**
@@ -650,6 +671,21 @@
}
/**
+ * Returns class javadoc.
+ *
+ * @param name name of class
+ * @param type type of javadoc
+ * @param indent indentation
+ * @return class javadoc
+ */
+ private static String getJavaDocForDefaultClass(String name, String type,
+ String indent) {
+ return NEW_LINE + indent + JAVA_DOC_FIRST_LINE + indent + type +
+ getSmallCase(name) + PERIOD + NEW_LINE + indent
+ + addFlagJavaDoc() + JAVA_DOC_END_LINE;
+ }
+
+ /**
* Returns javadoc start line.
*
* @param name name of attribute
@@ -712,7 +748,7 @@
/**
* For class.
*/
- IMPL_CLASS,
+ DEFAULT_CLASS,
/**
* For builder class.
diff --git a/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index e1020a1..1e856bf 100644
--- a/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/generator/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -138,7 +138,7 @@
bufferedWriter.write(getJavaDoc(PACKAGE_INFO, classInfo, isChildNode,
null));
String pkg = PACKAGE + SPACE + pack + SEMI_COLON;
- if (pkg.length() > LINE_SIZE) {
+ if (pkg.length() >= LINE_SIZE) {
pkg = processModifications(pkg, LINE_SIZE);
}
bufferedWriter.write(pkg);
@@ -361,7 +361,7 @@
String line = bufferReader.readLine();
while (line != null) {
- if (line.length() > LINE_SIZE) {
+ if (line.length() >= LINE_SIZE) {
line = processModifications(line, LINE_SIZE);
}
stringBuilder.append(line);
@@ -564,7 +564,7 @@
String temp;
for (String str : array) {
if (!str.contains(OPEN_CURLY_BRACKET)) {
- if (str.length() > SUB_LINE_SIZE) {
+ if (str.length() >= SUB_LINE_SIZE) {
count = getSplitString(str, newArray, count);
} else {
newArray.add(str);