[ONOS-5413]From string and to string method generation for YTB to handle in yms
Change-Id: Ib066598ca40ff642113481617369d82a6d94620a
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
index 067c80b..d7ba0fe 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -25,7 +25,14 @@
import java.util.LinkedList;
import java.util.List;
+import static java.util.Collections.unmodifiableList;
+import static org.onosproject.yangutils.datamodel.YangNodeType.INPUT_NODE;
+import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_SINGLE_INSTANCE_NODE;
+import static org.onosproject.yangutils.datamodel.exceptions.ErrorMessages.COLLISION_DETECTION;
+import static org.onosproject.yangutils.datamodel.exceptions.ErrorMessages.INPUT;
+import static org.onosproject.yangutils.datamodel.exceptions.ErrorMessages.getErrorMsgCollision;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
+import static org.onosproject.yangutils.datamodel.utils.YangConstructType.INPUT_DATA;
/*
* Reference RFC 6020.
@@ -87,22 +94,23 @@
*/
private List<YangLeafList> listOfLeafList;
- private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
+ private final List<YangAugment> yangAugmentedInfo;
/**
* Create a rpc input node.
*/
public YangInput() {
- super(YangNodeType.INPUT_NODE, new HashMap<>());
+ super(INPUT_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ yangAugmentedInfo = new ArrayList<>();
}
@Override
- public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
+ public void addToChildSchemaMap(YangSchemaNodeIdentifier id,
+ YangSchemaNodeContextInfo context)
throws DataModelException {
- getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
+ getYsnContextInfoMap().put(id, context);
}
@Override
@@ -112,7 +120,7 @@
}
@Override
- public void addToDefaultChildMap(YangSchemaNodeIdentifier yangSchemaNodeIdentifier,
+ public void addToDefaultChildMap(YangSchemaNodeIdentifier id,
YangSchemaNode yangSchemaNode) {
//For non data nodes, default child to be added to parent node.
// TODO
@@ -120,7 +128,7 @@
@Override
public YangSchemaNodeType getYangSchemaNodeType() {
- return YangSchemaNodeType.YANG_SINGLE_INSTANCE_NODE;
+ return YANG_SINGLE_INSTANCE_NODE;
}
@Override
@@ -136,18 +144,16 @@
YangConstructType dataType)
throws DataModelException {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate input " +
- "identifier detected, same " +
- "as input \"" + getName() +
- " in " + getLineNumber() +
- " at " + getCharPosition() +
- " in " + getFileName() + "\"");
+ throw new DataModelException(
+ getErrorMsgCollision(COLLISION_DETECTION, getName(),
+ getLineNumber(), getCharPosition(),
+ INPUT, getFileName()));
}
}
@Override
public YangConstructType getYangConstructType() {
- return YangConstructType.INPUT_DATA;
+ return INPUT_DATA;
}
@Override
@@ -164,7 +170,7 @@
@Override
public List<YangLeaf> getListOfLeaf() {
- return listOfLeaf;
+ return unmodifiableList(listOfLeaf);
}
@Override
@@ -174,12 +180,12 @@
@Override
public void addLeaf(YangLeaf leaf) {
- getListOfLeaf().add(leaf);
+ listOfLeaf.add(leaf);
}
@Override
public List<YangLeafList> getListOfLeafList() {
- return listOfLeafList;
+ return unmodifiableList(listOfLeafList);
}
@Override
@@ -189,7 +195,7 @@
@Override
public void addLeafList(YangLeafList leafList) {
- getListOfLeafList().add(leafList);
+ listOfLeafList.add(leafList);
}
@Override
@@ -204,17 +210,17 @@
@Override
public List<YangAugment> getAugmentedInfoList() {
- return yangAugmentedInfo;
+ return unmodifiableList(yangAugmentedInfo);
}
@Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
- for (YangLeaf yangLeaf : getListOfLeaf()) {
+ for (YangLeaf yangLeaf : listOfLeaf) {
yangLeaf.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
// Add namespace for all leaf list.
- for (YangLeafList yangLeafList : getListOfLeafList()) {
+ for (YangLeafList yangLeafList : listOfLeafList) {
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
index 92f240a..9bee1de 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -25,7 +25,13 @@
import java.util.LinkedList;
import java.util.List;
+import static java.util.Collections.unmodifiableList;
+import static org.onosproject.yangutils.datamodel.YangSchemaNodeType.YANG_SINGLE_INSTANCE_NODE;
+import static org.onosproject.yangutils.datamodel.exceptions.ErrorMessages.COLLISION_DETECTION;
+import static org.onosproject.yangutils.datamodel.exceptions.ErrorMessages.OUTPUT;
+import static org.onosproject.yangutils.datamodel.exceptions.ErrorMessages.getErrorMsgCollision;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
+import static org.onosproject.yangutils.datamodel.utils.YangConstructType.OUTPUT_DATA;
/*
* Reference RFC 6020.
@@ -86,7 +92,7 @@
*/
private List<YangLeafList> listOfLeafList;
- private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
+ private final List<YangAugment> yangAugmentedInfo;
/**
* Create a rpc output node.
@@ -95,13 +101,14 @@
super(YangNodeType.OUTPUT_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ yangAugmentedInfo = new ArrayList<>();
}
@Override
- public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
+ public void addToChildSchemaMap(YangSchemaNodeIdentifier id,
+ YangSchemaNodeContextInfo context)
throws DataModelException {
- getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
+ getYsnContextInfoMap().put(id, context);
}
@Override
@@ -111,7 +118,7 @@
}
@Override
- public void addToDefaultChildMap(YangSchemaNodeIdentifier yangSchemaNodeIdentifier,
+ public void addToDefaultChildMap(YangSchemaNodeIdentifier id,
YangSchemaNode yangSchemaNode) {
// For non data nodes, default child to be added to parent node.
// TODO
@@ -119,15 +126,14 @@
@Override
public YangSchemaNodeType getYangSchemaNodeType() {
- return YangSchemaNodeType.YANG_SINGLE_INSTANCE_NODE;
+ return YANG_SINGLE_INSTANCE_NODE;
}
@Override
- public void detectCollidingChild(String identifierName,
- YangConstructType dataType)
+ public void detectCollidingChild(String idName, YangConstructType dataType)
throws DataModelException {
// Detect colliding child.
- detectCollidingChildUtil(identifierName, dataType, this);
+ detectCollidingChildUtil(idName, dataType, this);
}
@Override
@@ -135,18 +141,15 @@
YangConstructType dataType)
throws DataModelException {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate " +
- "identifier detected, same " +
- "as output \"" + getName() +
- " in " + getLineNumber() +
- " at " + getCharPosition() +
- " in " + getFileName() + "\"");
+ getErrorMsgCollision(COLLISION_DETECTION, getName(),
+ getLineNumber(), getCharPosition(),
+ OUTPUT, getFileName());
}
}
@Override
public YangConstructType getYangConstructType() {
- return YangConstructType.OUTPUT_DATA;
+ return OUTPUT_DATA;
}
@Override
@@ -163,12 +166,12 @@
@Override
public List<YangLeaf> getListOfLeaf() {
- return listOfLeaf;
+ return unmodifiableList(listOfLeaf);
}
@Override
public void addLeaf(YangLeaf leaf) {
- getListOfLeaf().add(leaf);
+ listOfLeaf.add(leaf);
}
@Override
@@ -178,7 +181,7 @@
@Override
public List<YangLeafList> getListOfLeafList() {
- return listOfLeafList;
+ return unmodifiableList(listOfLeafList);
}
@Override
@@ -188,7 +191,7 @@
@Override
public void addLeafList(YangLeafList leafList) {
- getListOfLeafList().add(leafList);
+ listOfLeafList.add(leafList);
}
@Override
@@ -203,17 +206,17 @@
@Override
public List<YangAugment> getAugmentedInfoList() {
- return yangAugmentedInfo;
+ return unmodifiableList(yangAugmentedInfo);
}
@Override
public void setLeafNameSpaceAndAddToParentSchemaMap() {
// Add namespace for all leafs.
- for (YangLeaf yangLeaf : getListOfLeaf()) {
+ for (YangLeaf yangLeaf : listOfLeaf) {
yangLeaf.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
// Add namespace for all leaf list.
- for (YangLeafList yangLeafList : getListOfLeafList()) {
+ for (YangLeafList yangLeafList : listOfLeafList) {
yangLeafList.setLeafNameSpaceAndAddToParentSchemaMap(getNameSpace());
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/ErrorMessages.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/ErrorMessages.java
index bc98f8a..4a92990 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/ErrorMessages.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/ErrorMessages.java
@@ -28,6 +28,8 @@
private static final String AS = "as ";
public static final String QUOTES = "\"";
public static final String CASE = " case ";
+ public static final String INPUT = " input ";
+ public static final String OUTPUT = " output ";
public static final String CHOICE = " choice ";
public static final String GROUPING = " grouping ";
public static final String TYPEDEF = " typedef ";
@@ -95,5 +97,4 @@
.append(QUOTES);
return builder.toString();
}
-
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
index f2e7019..a2e78f3 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaImportData.java
@@ -35,11 +35,13 @@
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_MATH;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_REGEX_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.LIST;
import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
import static org.onosproject.yangutils.utils.UtilConstants.MAP;
import static org.onosproject.yangutils.utils.UtilConstants.ONOS_EVENT_PKG;
+import static org.onosproject.yangutils.utils.UtilConstants.PATTERN;
import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
import static org.onosproject.yangutils.utils.UtilConstants.SET;
@@ -215,7 +217,7 @@
* @return import for hash and equals method
*/
String getImportForHashAndEquals() {
- return getImportString(JAVA_UTIL_OBJECTS_IMPORT_PKG,
+ return getImportString(JAVA_UTIL_PKG,
JAVA_UTIL_OBJECTS_IMPORT_CLASS);
}
@@ -224,7 +226,7 @@
*
* @return import for to string method
*/
- String getImportForToString() {
+ public String getImportForToString() {
return getImportString(GOOGLE_MORE_OBJECT_IMPORT_PKG,
GOOGLE_MORE_OBJECT_IMPORT_CLASS);
}
@@ -234,8 +236,17 @@
*
* @return import for to bitset method
*/
- String getImportForToBitSet() {
- return getImportString(JAVA_UTIL_OBJECTS_IMPORT_PKG, BITSET);
+ public String getImportForToBitSet() {
+ return getImportString(JAVA_UTIL_PKG, BITSET);
+ }
+
+ /**
+ * 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/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index 8570b6c..cfe507b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -39,8 +39,6 @@
import static org.onosproject.yangutils.translator.tojava.javamodel
.AttributesJavaDataType.getJavaImportPackage;
import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
-import static org.onosproject.yangutils.utils.UtilConstants.REGEX_IMPORTS;
-import static org.onosproject.yangutils.utils.UtilConstants.PATTERN;
/**
* Represents the information about individual imports in the generated file.
@@ -218,9 +216,6 @@
if (referredTypesAttrInfo.getAttributeType().getDataType() == BINARY) {
qualifiedInfoOfFromString.setClassInfo(BASE64);
qualifiedInfoOfFromString.setPkgInfo(COLLECTION_IMPORTS);
- } else if (referredTypesAttrInfo.getAttributeType().getDataType() == BITS) {
- qualifiedInfoOfFromString.setClassInfo(PATTERN);
- qualifiedInfoOfFromString.setPkgInfo(REGEX_IMPORTS);
} else {
qualifiedInfoOfFromString.setClassInfo(
getJavaImportClass(referredTypesAttrInfo.getAttributeType(),
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
index 9fdd9c8..dee7b1d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaCodeFragmentFiles.java
@@ -198,11 +198,10 @@
/**
* Adds build method for interface.
*
- * @param pluginConfig plugin configurations
* @return build method for interface
* @throws IOException when fails to append to temporary file
*/
- public String addBuildMethodForInterface(YangPluginConfig pluginConfig)
+ public String addBuildMethodForInterface()
throws IOException {
if (beanTempFiles != null) {
return beanTempFiles.addBuildMethodForInterface();
@@ -258,7 +257,7 @@
* @param isErrorOccurred if error occurred
* @throws IOException when failed to delete the temporary files
*/
- void freeTemporaryResources(boolean isErrorOccurred)
+ public void freeTemporaryResources(boolean isErrorOccurred)
throws IOException {
if (beanTempFiles != null) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index 1650395..97feb1b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -24,6 +24,7 @@
import java.io.File;
import java.io.IOException;
+import java.util.List;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
@@ -59,6 +60,7 @@
* Java file handle for enum class.
*/
private File enumClassJavaFileHandle;
+ private boolean isEnumClass;
/**
* Creates an instance of temporary java code fragment.
@@ -66,7 +68,7 @@
* @param javaFileInfo generated java file info
* @throws IOException when fails to create new file handle
*/
- TempJavaEnumerationFragmentFiles(JavaFileInfoTranslator javaFileInfo)
+ public TempJavaEnumerationFragmentFiles(JavaFileInfoTranslator javaFileInfo)
throws IOException {
super(javaFileInfo);
@@ -106,7 +108,8 @@
* @param config plugin configurations
* @throws IOException when fails to do IO operations
*/
- void addEnumAttributeToTempFiles(YangNode curNode, YangPluginConfig config)
+ public void addEnumAttributeToTempFiles(YangNode curNode,
+ YangPluginConfig config)
throws IOException {
addJavaSnippetInfoToApplicableTempFiles(getJavaAttributeForEnum(config),
@@ -174,9 +177,11 @@
@Override
public void generateJavaFile(int fileType, YangNode curNode)
throws IOException {
+
+ List<String> imports = this.getJavaImportData().getImports();
createPackage(curNode);
enumClassJavaFileHandle = getJavaFileHandle(getJavaClassName(EMPTY_STRING));
- generateEnumClassFile(enumClassJavaFileHandle, curNode);
+ generateEnumClassFile(enumClassJavaFileHandle, curNode, imports);
freeTemporaryResources(false);
}
@@ -191,6 +196,21 @@
throws IOException {
closeFile(enumClassJavaFileHandle, isErrorOccurred);
closeFile(enumClassTempFileHandle, true);
- super.freeTemporaryResources(isErrorOccurred);
+ if (isEnumClass) {
+ super.freeTemporaryResources(isErrorOccurred);
+ }
+ }
+
+ public boolean isEnumClass() {
+ return isEnumClass;
+ }
+
+ /**
+ * Sets true if free super resources is required.
+ *
+ * @param enumClass true if free super resources is required
+ */
+ public void setEnumClass(boolean enumClass) {
+ isEnumClass = enumClass;
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 237b6bb..ec97d8e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -27,23 +27,26 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
+import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGroupingTranslator;
+import org.onosproject.yangutils.translator.tojava.utils.BitsJavaInfoHandler;
import org.onosproject.yangutils.translator.tojava.utils.JavaExtendsListHolder;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.List;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.DEFAULT_CLASS_MASK;
-import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPE_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_IMPL_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ADD_TO_LIST_INTERFACE_MASK;
@@ -98,6 +101,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.BIT_SET;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
@@ -106,6 +110,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
import static org.onosproject.yangutils.utils.UtilConstants.INVOCATION_TARGET_EXCEPTION_IMPORT;
+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.UtilConstants.OPERATION_TYPE_ATTRIBUTE;
import static org.onosproject.yangutils.utils.UtilConstants.OPERATION_TYPE_CLASS;
@@ -398,6 +403,11 @@
private boolean isAttributePresent;
/**
+ * List of bits attributes.
+ */
+ private List<BitsJavaInfoHandler> bitsHandler = new ArrayList<>();
+
+ /**
* Creates an instance of temp JAVA fragment files.
*/
TempJavaFragmentFiles() {
@@ -460,13 +470,13 @@
if (javaFlagSet(GENERATE_TYPE_CLASS)) {
addGeneratedTempFile(ATTRIBUTES_MASK | GETTER_FOR_CLASS_MASK |
HASH_CODE_IMPL_MASK | EQUALS_IMPL_MASK |
- TO_STRING_IMPL_MASK |
FROM_STRING_IMPL_MASK);
+
+ if (getGeneratedJavaFiles() != GENERATE_UNION_CLASS) {
+ addGeneratedTempFile(TO_STRING_IMPL_MASK);
+ }
}
- //Initialize temp files to generate enum class.
- if (javaFlagSet(GENERATE_ENUM_CLASS)) {
- addGeneratedTempFile(FROM_STRING_IMPL_MASK);
- }
+
//Set temporary file handles
if (tempFlagSet(ATTRIBUTES_MASK)) {
attributesTempFileHandle =
@@ -712,12 +722,57 @@
boolean listAttribute) {
container.setConflictResolveConfig(config.getConflictResolver());
container.updateJavaQualifiedInfo();
- return getAttributeInfoForTheData(
+ addImportForLeafInfo(tempFiles, container);
+ JavaAttributeInfo attr = getAttributeInfoForTheData(
container.getJavaQualifiedInfo(),
container.getJavaName(config.getConflictResolver()),
container.getDataType(),
tempFiles.getIsQualifiedAccessOrAddToImportList(
container.getJavaQualifiedInfo()), listAttribute);
+ if (container.getDataType().getDataType() == YangDataTypes.BITS) {
+ addBitsHandler(attr, container.getDataType(), tempFiles);
+ }
+ return attr;
+ }
+
+ /**
+ * Adds bits handler attribute for bits to string method.
+ *
+ * @param attr attribute
+ * @param type type
+ * @param tempFiles temp fragment file
+ */
+ static void addBitsHandler(JavaAttributeInfo attr, YangType type,
+ TempJavaFragmentFiles tempFiles) {
+ BitsJavaInfoHandler handler
+ = new BitsJavaInfoHandler(attr, type);
+ tempFiles.getBitsHandler().add(handler);
+ }
+
+ /**
+ * Adds attribute types import to leaf info container's parent.
+ *
+ * @param tempFiles temp java file
+ * @param container leaf info container
+ */
+ private static void addImportForLeafInfo(TempJavaFragmentFiles tempFiles,
+ JavaLeafInfoContainer container) {
+ String containedInCls = getCapitalCase(tempFiles.getJavaFileInfo()
+ .getJavaName());
+ String containedInPkg = tempFiles.getJavaFileInfo().getPackage();
+ JavaQualifiedTypeInfoTranslator info = new JavaQualifiedTypeInfoTranslator();
+ if (container.getDataType().getDataType() == YangDataTypes.BITS) {
+ //Add bitset import for type and leaf value flags.
+ info = new JavaQualifiedTypeInfoTranslator();
+ info.setClassInfo(BIT_SET);
+ info.setPkgInfo(JAVA_UTIL_PKG);
+ tempFiles.getJavaImportData().addImportInfo(info, containedInCls,
+ containedInPkg);
+ }
+ tempFiles.getJavaImportData().addImportInfo(
+ (JavaQualifiedTypeInfoTranslator) container
+ .getJavaQualifiedInfo(), containedInCls, containedInPkg);
+
}
/**
@@ -1112,13 +1167,11 @@
name.append(getGeneratedJavaClassName());
if (rootNode && !toAppend.equals(BUILDER)) {
name.append(OP_PARAM);
- return getDefaultConstructorString(name.toString(), modifier
- );
+ return getDefaultConstructorString(name.toString(), modifier);
}
if (suffix) {
name.append(toAppend);
- return getDefaultConstructorString(name.toString(), modifier
- );
+ return getDefaultConstructorString(name.toString(), modifier);
}
StringBuilder appended = new StringBuilder();
if (toAppend.equals(DEFAULT)) {
@@ -1172,13 +1225,14 @@
*
* @param attr type attribute info
* @param fromStringAttr from string attribute info
+ * @param genClassName generated class name
* @throws IOException when fails to append to temporary file
*/
void addFromStringMethod(JavaAttributeInfo attr,
- JavaAttributeInfo fromStringAttr)
+ JavaAttributeInfo fromStringAttr, String genClassName)
throws IOException {
appendToFile(fromStringImplTempFileHandle,
- getFromStringMethod(attr, fromStringAttr) + NEW_LINE);
+ getFromStringMethod(attr, fromStringAttr, genClassName) + NEW_LINE);
}
/**
@@ -1489,7 +1543,8 @@
typeInfo, newAttrInfo.getAttributeName(),
attrType, getIsQualifiedAccessOrAddToImportList(
typeInfo), false);
- addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
+ addFromStringMethod(newAttrInfo, fromStringAttributeInfo,
+ getGeneratedJavaClassName());
}
}
}
@@ -1584,17 +1639,7 @@
addArrayListImport(imports);
}
- boolean leavesPresent;
- if (curNode instanceof YangLeavesHolder) {
- YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
- leavesPresent = leavesHolder.getListOfLeaf() != null &&
- !leavesHolder.getListOfLeaf().isEmpty() ||
- leavesHolder.getListOfLeafList() != null &&
- !leavesHolder.getListOfLeafList().isEmpty();
- if (leavesPresent) {
- addBitsetImport(imports);
- }
- }
+ addBitsAndBase64Imports(curNode, imports);
if (curNode instanceof YangAugmentableNode) {
addImportsForAugmentableClass(imports, true, false, curNode);
addInvocationExceptionImport(imports);
@@ -1637,8 +1682,17 @@
}
}
- private void addBitsetImport(List<String> imports) {
- imports.add(javaImportData.getImportForToBitSet());
+ //Adds import for bitset and base64 list.
+ private void addBitsAndBase64Imports(YangNode curNode, List<String> imports) {
+ if (curNode instanceof YangLeavesHolder) {
+ YangLeavesHolder holder = (YangLeavesHolder) curNode;
+ String impt = this.getJavaImportData()
+ .getImportForToBitSet();
+ if (!holder.getListOfLeaf().isEmpty() &&
+ !imports.contains(impt)) {
+ imports.add(impt);
+ }
+ }
}
/**
@@ -1875,4 +1929,14 @@
private boolean tempFlagSet(int flag) {
return (tempFilesFlagSet & flag) != 0;
}
+
+ /**
+ * Returns list of bits attributes.
+ *
+ * @return list of bits attributes
+ */
+ public List<BitsJavaInfoHandler> getBitsHandler() {
+ return bitsHandler;
+ }
+
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 022caf1..a30ed4b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/plugin/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.BITS;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
@@ -59,6 +60,7 @@
* Represents implementation of java data type code fragments temporary implementations. Maintains the temp files
* required specific for user defined data type java snippet generation.
*/
+//TODO: Update with multi type handler framework.
public class TempJavaTypeFragmentFiles
extends TempJavaFragmentFiles {
@@ -73,16 +75,6 @@
private static final String CONSTRUCTOR_FOR_TYPE_FILE_NAME = "ConstructorForType";
/**
- * File name for typedef class file name suffix.
- */
- private static final String TYPEDEF_CLASS_FILE_NAME_SUFFIX = EMPTY_STRING;
-
- /**
- * File name for generated class file for special type like union, typedef suffix.
- */
- private static final String UNION_TYPE_CLASS_FILE_NAME_SUFFIX = EMPTY_STRING;
-
- /**
* Integer index in type list.
*/
private int intIndex = 0;
@@ -162,6 +154,8 @@
*/
private JavaAttributeInfo uLongAttribute;
+ private List<YangType<?>> local = new ArrayList<>();
+
/**
* Creates an instance of temporary java code fragment.
*
@@ -177,12 +171,13 @@
* Initialize getterImpl, attributes, hash code, equals and to strings
* when generation file type matches to typeDef class mask.
*/
- addGeneratedTempFile(OF_STRING_IMPL_MASK);
- addGeneratedTempFile(CONSTRUCTOR_FOR_TYPE_MASK);
- addGeneratedTempFile(FROM_STRING_IMPL_MASK);
+ addGeneratedTempFile(OF_STRING_IMPL_MASK | CONSTRUCTOR_FOR_TYPE_MASK |
+ FROM_STRING_IMPL_MASK);
- setOfStringImplTempFileHandle(getTemporaryFileHandle(OF_STRING_METHOD_FILE_NAME));
- setConstructorForTypeTempFileHandle(getTemporaryFileHandle(CONSTRUCTOR_FOR_TYPE_FILE_NAME));
+ ofStringImplTempFileHandle = getTemporaryFileHandle(
+ OF_STRING_METHOD_FILE_NAME);
+ constructorForTypeTempFileHandle = getTemporaryFileHandle(
+ CONSTRUCTOR_FOR_TYPE_FILE_NAME);
}
@@ -197,15 +192,6 @@
}
/**
- * Sets type class constructor method's temporary file handle.
- *
- * @param constructorForTypeTempFileHandle type class constructor method's temporary file handle
- */
- private void setConstructorForTypeTempFileHandle(File constructorForTypeTempFileHandle) {
- this.constructorForTypeTempFileHandle = constructorForTypeTempFileHandle;
- }
-
- /**
* Returns java file handle for typedef class file.
*
* @return java file handle for typedef class file
@@ -252,119 +238,132 @@
}
/**
- * Set of string method's temporary file handle.
- *
- * @param ofStringImplTempFileHandle of string method's temporary file handle
- */
- private void setOfStringImplTempFileHandle(File ofStringImplTempFileHandle) {
- this.ofStringImplTempFileHandle = ofStringImplTempFileHandle;
- }
-
- /**
* Adds all the type in the current data model node as part of the generated temporary file.
*
* @param yangTypeHolder YANG java data model node which has type info, eg union / typedef
- * @param pluginConfig plugin configurations for naming conventions
+ * @param config plugin configurations for naming conventions
* @throws IOException IO operation fail
*/
- void addTypeInfoToTempFiles(YangTypeHolder yangTypeHolder, YangPluginConfig pluginConfig)
+ void addTypeInfoToTempFiles(YangTypeHolder yangTypeHolder, YangPluginConfig config)
throws IOException {
List<YangType<?>> typeList = yangTypeHolder.getTypeList();
if (typeList != null) {
- for (YangType<?> yangType : typeList) {
- if (!(yangType instanceof YangJavaTypeTranslator)) {
- throw new TranslatorException("Type does not have Java info " +
- yangType.getDataTypeName() + " in " + yangType.getLineNumber() + " at " + yangType
- .getCharPosition()
- + " in " + yangType.getFileName());
+ List<YangType<?>> types = validateTypes(typeList);
+ for (YangType<?> type : types) {
+ if (!(type instanceof YangJavaTypeTranslator)) {
+ throw new TranslatorException(
+ "Type does not have Java info " + type
+ .getDataTypeName() + " in " + type
+ .getLineNumber() + " at " + type
+ .getCharPosition() + " in " +
+ type.getFileName());
}
- JavaAttributeInfo javaAttributeInfo = getAttributeForType(yangType, pluginConfig);
+ JavaAttributeInfo javaAttributeInfo = getAttributeForType(type,
+ config);
+ if (type.getDataType() == BITS) {
+ addBitsHandler(javaAttributeInfo, type, this);
+ }
addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo,
- pluginConfig, typeList);
+ config, types);
}
- addTypeConstructor(pluginConfig);
- addMethodsInConflictCase(pluginConfig);
+ addTypeConstructor();
+ addMethodsInConflictCase(config);
}
}
/**
* Returns java attribute.
*
- * @param yangType YANG type
- * @param pluginConfig plugin configurations
+ * @param type YANG type
+ * @param config plugin configurations
* @return java attribute
*/
- private JavaAttributeInfo getAttributeForType(YangType yangType, YangPluginConfig pluginConfig) {
- YangJavaTypeTranslator javaType = (YangJavaTypeTranslator) yangType;
- javaType.updateJavaQualifiedInfo(pluginConfig.getConflictResolver());
- String typeName = javaType.getDataTypeName();
- typeName = getCamelCase(typeName, pluginConfig.getConflictResolver());
+ private JavaAttributeInfo getAttributeForType(YangType type,
+ YangPluginConfig config) {
+ YangJavaTypeTranslator javaType = (YangJavaTypeTranslator) type;
+ javaType.updateJavaQualifiedInfo(config.getConflictResolver());
+ String typeName = getCamelCase(javaType.getDataTypeName(), config
+ .getConflictResolver());
return getAttributeInfoForTheData(
- javaType.getJavaQualifiedInfo(),
- typeName, javaType,
- getIsQualifiedAccessOrAddToImportList(javaType.getJavaQualifiedInfo()),
- false);
+ javaType.getJavaQualifiedInfo(), typeName, javaType,
+ getIsQualifiedAccessOrAddToImportList(
+ javaType.getJavaQualifiedInfo()), false);
}
/**
* Adds the new attribute info to the target generated temporary files for union class.
*
- * @param javaAttributeInfo the attribute info that needs to be added to temporary files
- * @param pluginConfig plugin configurations
- * @param typeList type list
+ * @param attr the attribute info that needs to be added to temporary files
+ * @param config plugin configurations
+ * @param types type list
* @throws IOException IO operation fail
*/
- private void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo javaAttributeInfo,
- YangPluginConfig pluginConfig, List<YangType<?>> typeList)
+ private void addJavaSnippetInfoToApplicableTempFiles(
+ JavaAttributeInfo attr, YangPluginConfig config, List<YangType<?>> types)
throws IOException {
- YangDataTypes attrType = javaAttributeInfo.getAttributeType().getDataType();
+ YangDataTypes attrType = attr.getAttributeType().getDataType();
if (attrType == INT16 || attrType == UINT8) {
- boolean isShortConflict = validateForConflictingShortTypes(typeList);
- javaAttributeInfo.setShortConflict(isShortConflict);
- updateAttributeCondition(javaAttributeInfo);
+ boolean isShortConflict = validateForConflictingShortTypes(types);
+ attr.setShortConflict(isShortConflict);
+ updateAttributeCondition(attr);
if (!isShortConflict) {
- addMethodsWhenNoConflictingTypes(javaAttributeInfo, pluginConfig);
+ addMethodsWhenNoConflictingTypes(attr, config, types);
}
} else if (attrType == INT32 || attrType == UINT16) {
- boolean isIntConflict = validateForConflictingIntTypes(typeList);
- javaAttributeInfo.setIntConflict(isIntConflict);
- updateAttributeCondition(javaAttributeInfo);
+ boolean isIntConflict = validateForConflictingIntTypes(types);
+ attr.setIntConflict(isIntConflict);
+ updateAttributeCondition(attr);
if (!isIntConflict) {
- addMethodsWhenNoConflictingTypes(javaAttributeInfo, pluginConfig);
+ addMethodsWhenNoConflictingTypes(attr, config, types);
}
} else if (attrType == INT64 || attrType == UINT32) {
- boolean isLongConflict = validateForConflictingLongTypes(typeList);
- javaAttributeInfo.setLongConflict(isLongConflict);
- updateAttributeCondition(javaAttributeInfo);
+ boolean isLongConflict = validateForConflictingLongTypes(types);
+ attr.setLongConflict(isLongConflict);
+ updateAttributeCondition(attr);
if (!isLongConflict) {
- addMethodsWhenNoConflictingTypes(javaAttributeInfo, pluginConfig);
+ addMethodsWhenNoConflictingTypes(attr, config, types);
}
} else {
- addMethodsWhenNoConflictingTypes(javaAttributeInfo, pluginConfig);
+ addMethodsWhenNoConflictingTypes(attr, config, types);
}
- super.addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo, pluginConfig);
+ super.addJavaSnippetInfoToApplicableTempFiles(attr, config);
}
+ private List<YangType<?>> validateTypes(List<YangType<?>> types) {
+ String curType;
+ List<String> preType = new ArrayList<>();
+ for (YangType type : types) {
+ curType = type.getDataTypeName();
+ if (!preType.contains(curType)) {
+ preType.add(curType);
+ local.add(type);
+ }
+ }
+ return local;
+ }
+
/**
* Adds of method and constructor when there is no conflicting types.
*
* @param javaAttributeInfo java attribute info
* @param pluginConfig plugin configurations
+ * @param types YANG type
* @throws IOException when fails to do IO operations
*/
private void addMethodsWhenNoConflictingTypes(JavaAttributeInfo javaAttributeInfo,
- YangPluginConfig pluginConfig)
+ YangPluginConfig pluginConfig, List<YangType<?>> types)
throws IOException {
if ((getGeneratedTempFiles() & OF_STRING_IMPL_MASK) != 0) {
addOfStringMethod(javaAttributeInfo, pluginConfig);
}
if ((getGeneratedTempFiles() & CONSTRUCTOR_FOR_TYPE_MASK) != 0) {
- addTypeConstructor(javaAttributeInfo, pluginConfig);
+ addTypeConstructor(javaAttributeInfo, types.indexOf
+ (javaAttributeInfo.getAttributeType()));
}
}
@@ -463,67 +462,84 @@
newAttrInfo.getAttributeType(),
getIsQualifiedAccessOrAddToImportList(qualifiedInfoOfFromString), false);
- addFromStringMethod(newAttrInfo, fromStringAttributeInfo);
+ addFromStringMethod(newAttrInfo, fromStringAttributeInfo, getGeneratedJavaClassName());
}
/**
* Adds type constructor.
*
- * @param attr attribute info
- * @param pluginConfig plugin configurations
+ * @param attr attribute info
+ * @param count count of types
* @throws IOException when fails to append to temporary file
*/
- private void addTypeConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
+ private void addTypeConstructor(JavaAttributeInfo attr, int count)
throws IOException {
- appendToFile(getConstructorForTypeTempFileHandle(), getTypeConstructorStringAndJavaDoc(attr,
- getGeneratedJavaClassName()) + NEW_LINE);
+ appendToFile(getConstructorForTypeTempFileHandle(),
+ getTypeConstructorStringAndJavaDoc(
+ attr, getGeneratedJavaClassName(), getGeneratedJavaFiles(), count)
+ + NEW_LINE);
}
/**
* Adds type constructor.
*
- * @param pluginConfig plugin configurations
* @throws IOException when fails to append to temporary file
*/
- private void addTypeConstructor(YangPluginConfig pluginConfig)
+ private void addTypeConstructor()
throws IOException {
JavaAttributeInfo attr = getIntAttribute();
if (attr != null) {
attr = getUIntAttribute();
}
+ boolean index = getIntIndex() < getUIntIndex();
+ int count;
+ if (index) {
+ count = getIntIndex();
+ } else {
+ count = getUIntIndex();
+ }
if (attr != null) {
if (attr.isIntConflict()) {
appendToFile(getConstructorForTypeTempFileHandle(), getTypeConstructorStringAndJavaDoc(
getIntAttribute(),
getUIntAttribute(), getGeneratedJavaClassName(), INT_TYPE_CONFLICT,
- getIntIndex()
- < getUIntIndex()) + NEW_LINE);
+ index, count) + NEW_LINE);
}
}
attr = getLongAttribute();
if (attr != null) {
attr = getULongAttribute();
}
+ index = getLongIndex() < getULongIndex();
+ if (index) {
+ count = getLongIndex();
+ } else {
+ count = getULongIndex();
+ }
if (attr != null) {
if (attr.isLongConflict()) {
appendToFile(getConstructorForTypeTempFileHandle(), getTypeConstructorStringAndJavaDoc(
getLongAttribute(),
getULongAttribute(), getGeneratedJavaClassName(), LONG_TYPE_CONFLICT,
- getLongIndex()
- < getULongIndex()) + NEW_LINE);
+ index, count) + NEW_LINE);
}
}
attr = getShortAttribute();
if (attr != null) {
attr = getUInt8Attribute();
}
+ index = getShortIndex() < getUInt8Index();
+ if (index) {
+ count = getShortIndex();
+ } else {
+ count = getUInt8Index();
+ }
if (attr != null) {
if (attr.isShortConflict()) {
appendToFile(getConstructorForTypeTempFileHandle(), getTypeConstructorStringAndJavaDoc(
getShortAttribute(),
getUInt8Attribute(), getGeneratedJavaClassName(), SHORT_TYPE_CONFLICT,
- getShortIndex()
- < getUInt8Index()) + NEW_LINE);
+ index, count) + NEW_LINE);
}
}
}
@@ -587,29 +603,26 @@
}
createPackage(curNode);
+ addImportsToStringAndHasCodeMethods(imports, true);
/*
* Creates type def class file.
*/
if ((fileType & GENERATE_TYPEDEF_CLASS) != 0) {
- addImportsToStringAndHasCodeMethods(imports, true);
- setTypedefClassJavaFileHandle(getJavaFileHandle(getJavaClassName(TYPEDEF_CLASS_FILE_NAME_SUFFIX)));
-
- // In case if data type is binary, MoreObjects is not required and should be removed.
- if (curNode instanceof YangTypeHolder) {
- YangType yangType = ((YangTypeHolder) curNode).getTypeList().get(0);
- if (yangType.getDataType() == YangDataTypes.BINARY) {
- imports.remove(getJavaImportData().getImportForToString());
- }
- }
+ setTypedefClassJavaFileHandle(getJavaFileHandle(
+ getJavaClassName(EMPTY_STRING)));
generateTypeDefClassFile(getTypedefClassJavaFileHandle(), curNode, imports);
}
+ String bit = getJavaImportData().getImportForToBitSet();
+ if (!imports.contains(bit)) {
+ imports.add(bit);
+ }
/*
* Creates type class file.
*/
if ((fileType & GENERATE_UNION_CLASS) != 0) {
- addImportsToStringAndHasCodeMethods(imports, true);
- setTypeClassJavaFileHandle(getJavaFileHandle(getJavaClassName(UNION_TYPE_CLASS_FILE_NAME_SUFFIX)));
+ setTypeClassJavaFileHandle(getJavaFileHandle(
+ getJavaClassName(EMPTY_STRING)));
generateUnionClassFile(getTypeClassJavaFileHandle(), curNode, imports);
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index 136fad5..2a1c8b4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -22,11 +22,9 @@
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangGrouping;
-import org.onosproject.yangutils.datamodel.YangInput;
import org.onosproject.yangutils.datamodel.YangLeavesHolder;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-import org.onosproject.yangutils.datamodel.YangOutput;
import org.onosproject.yangutils.datamodel.YangSchemaNode;
import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
@@ -106,10 +104,10 @@
YangPluginConfig config) {
String javaGenName;
if (info instanceof YangJavaInputTranslator) {
- javaGenName = ((YangInput) info).getParent().getName() +
+ javaGenName = ((YangJavaInputTranslator) info).getParent().getName() +
INPUT_KEYWORD;
} else if (info instanceof YangJavaOutputTranslator) {
- javaGenName = ((YangOutput) info).getParent().getName() +
+ javaGenName = ((YangJavaOutputTranslator) info).getParent().getName() +
OUTPUT_KEYWORD;
} else {
javaGenName = ((YangNode) info).getName();
@@ -222,8 +220,6 @@
/*
* Module / sub module node code generation.
*/
- translator.getServiceTempFiles()
- .addCurNodeLeavesInfoToTempFiles((YangNode) info, config);
if (info instanceof YangJavaModuleTranslator) {
if (!((YangJavaModuleTranslator) info).getNotificationNodes()
.isEmpty()) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
index 57339e7..f4273b5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
@@ -115,6 +115,7 @@
throw new InvalidNodeForTranslatorException();
}
generateCodeOfNode(this, yangPlugin);
+ tempFileHandle.getEnumTempFiles().setEnumClass(true);
} catch (IOException e) {
throw new TranslatorException(getErrorMsg(FAIL_AT_ENTRY, this,
e.getLocalizedMessage()));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/BitsJavaInfoHandler.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/BitsJavaInfoHandler.java
new file mode 100644
index 0000000..b0ce250
--- /dev/null
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/BitsJavaInfoHandler.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.translator.tojava.utils;
+
+import org.onosproject.yangutils.datamodel.YangBit;
+import org.onosproject.yangutils.datamodel.YangBits;
+import org.onosproject.yangutils.datamodel.YangEnum;
+import org.onosproject.yangutils.datamodel.YangEnumeration;
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
+import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumerationTranslator;
+
+import java.io.IOException;
+import java.util.Map;
+
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+
+/**
+ * Represents bits YANG type info.
+ */
+public class BitsJavaInfoHandler {
+
+ private JavaAttributeInfo attr;
+ private YangType<?> yangType;
+
+ /**
+ * Creates an instance of bits java info handler.
+ *
+ * @param attr java attribute
+ * @param yangType YANG type
+ */
+ public BitsJavaInfoHandler(JavaAttributeInfo attr, YangType<?> yangType) {
+ this.attr = attr;
+ this.yangType = yangType;
+ }
+
+ /**
+ * Returns bits type enum file.
+ *
+ * @param attr attribute
+ * @param type data type
+ * @param curNode current node
+ * @throws IOException when fails to do IO operations
+ */
+ static void generateBitsFile(JavaAttributeInfo attr, YangType type,
+ YangNode curNode) throws IOException {
+ JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) curNode)
+ .getJavaFileInfo();
+ String className = fileInfo.getJavaName() +
+ getCapitalCase(attr.getAttributeName());
+ JavaFileInfoTranslator attrInfo = new JavaFileInfoTranslator();
+ attrInfo.setJavaName(className);
+ attrInfo.setPackage(fileInfo.getPackage());
+ attrInfo.setBaseCodeGenPath(fileInfo.getBaseCodeGenPath());
+ attrInfo.setGeneratedFileTypes(GENERATE_ENUM_CLASS);
+ attrInfo.setPackageFilePath(fileInfo.getPackageFilePath());
+ attrInfo.setPluginConfig(fileInfo.getPluginConfig());
+ TempJavaCodeFragmentFiles codeFile = new TempJavaCodeFragmentFiles(attrInfo);
+ YangJavaEnumerationTranslator enumeration = new YangJavaEnumerationTranslator() {
+ @Override
+ public String getJavaPackage() {
+ return attr.getImportInfo().getPkgInfo();
+ }
+
+ @Override
+ public String getJavaClassNameOrBuiltInType() {
+ return className;
+ }
+
+ @Override
+ public String getJavaAttributeName() {
+ return className;
+ }
+ };
+
+ enumeration.setName(className);
+ enumeration.setJavaFileInfo(attrInfo);
+ enumeration.setTempJavaCodeFragmentFiles(codeFile);
+ YangBits yangBits = (YangBits) type.getDataTypeExtendedInfo();
+ Integer key;
+ YangBit bit;
+ String bitName;
+ for (Map.Entry<Integer, YangBit> entry : yangBits.getBitPositionMap()
+ .entrySet()) {
+ key = entry.getKey();
+ bit = entry.getValue();
+ if (bit != null) {
+ bitName = bit.getBitName();
+ createAndAddEnum(bitName, key, enumeration);
+ }
+ }
+
+ codeFile.getEnumTempFiles()
+ .addEnumAttributeToTempFiles(enumeration, fileInfo.getPluginConfig());
+ codeFile.getEnumTempFiles().setEnumClass(false);
+ codeFile.generateJavaFile(GENERATE_ENUM_CLASS, enumeration);
+ }
+
+ private static void createAndAddEnum(String name, int value,
+ YangEnumeration enumeration) {
+ YangEnum yangEnum = new YangEnum();
+ yangEnum.setNamedValue(name);
+ yangEnum.setValue(value);
+ try {
+ enumeration.addEnumInfo(yangEnum);
+ } catch (DataModelException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Returns java attribute for bits.
+ *
+ * @return java attribute for bits
+ */
+ public JavaAttributeInfo getAttr() {
+ return attr;
+ }
+
+ /**
+ * Returns YANG type for bits.
+ *
+ * @return yang type for bits
+ */
+ public YangType<?> getYangType() {
+ return yangType;
+ }
+}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 7f1cfce..4c711bf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -164,7 +164,8 @@
* @return enum file class definition
*/
private static String getEnumClassDefinition(String yangName) {
- return getDefaultDefinition(ENUM, yangName, PUBLIC);
+ return trimAtLast(getDefaultDefinition(ENUM, yangName, PUBLIC),
+ NEW_LINE);
}
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 5671dd7..916dd42 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -36,6 +36,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getImportString;
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;
@@ -56,6 +57,7 @@
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.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
import static org.onosproject.yangutils.utils.UtilConstants.PROTECTED;
@@ -66,6 +68,7 @@
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.SET;
+import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
@@ -233,8 +236,8 @@
/**
* Returns string for enum's attribute for enum class.
*
- * @param name name of attribute
- * @param value value of the enum
+ * @param name name of attribute
+ * @param value value of the enum
* @return string for enum's attribute
*/
public static String generateEnumAttributeStringWithSchemaName(
@@ -320,7 +323,7 @@
return getJavaAttributeDefinition(null, INT, className,
false, PRIVATE, null) +
getJavaAttributeDefinition(null, STRING_DATA_TYPE, SCHEMA_NAME,
- false, PRIVATE, null);
+ false, PRIVATE, null) + NEW_LINE;
}
/**
@@ -417,9 +420,9 @@
private static String getTypeConflictAttributeStrings(String modifier,
String attr1,
String att2) {
- return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE +
+ return FOUR_SPACE_INDENTATION + modifier + SPACE +
attr1 + FOUR_SPACE_INDENTATION + modifier +
- SPACE + att2;
+ SPACE + att2 + NEW_LINE;
}
/**
@@ -483,4 +486,19 @@
return " this.yangAugmentedInfoMap = builderObject" +
".yangAugmentedInfoMap();\n";
}
+
+ /**
+ * Returns set value parameter for union class.
+ *
+ * @return set value parameter for union class.
+ */
+ static String getSetValueParaForUnionClass() {
+ String[] array = {NEW_LINE, SEMI_COLON};
+ return new StringBuilder().append(trimAtLast(
+ getJavaAttributeDefinition(null, BIT_SET, SET_VALUE_PARA,
+ false, PRIVATE, null), array))
+ .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+ .append(SPACE).append(BIT_SET).append(OPEN_CLOSE_BRACKET_STRING)
+ .append(signatureClose()).toString();
+ }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index a9ce9b4..979df3a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -18,8 +18,6 @@
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangBit;
-import org.onosproject.yangutils.datamodel.YangBits;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangDerivedInfo;
@@ -28,29 +26,27 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeDef;
+import org.onosproject.yangutils.datamodel.YangUnion;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.translator.tojava.JavaImportData;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
+import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaEventFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaTypeFragmentFiles;
-import org.onosproject.yangutils.utils.UtilConstants;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import static java.util.Collections.sort;
-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.DERIVED;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
@@ -86,13 +82,9 @@
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK;
-import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData;
-import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.getQualifiedTypeInfoOfCurNode;
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.BracketType.OPEN_CLOSE_BRACKET;
-import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAugmentationAttribute;
import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute;
@@ -100,16 +92,19 @@
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;
import static org.onosproject.yangutils.translator.tojava.utils.MethodBodyTypes.ENUM_METHOD_STRING_VALUE;
-import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.builderMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodImpl;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAddAugmentInfoMethodInterface;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getAugmentsDataMethodForService;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBitSetEnumClassFromString;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBitSetEnumClassToString;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructorStart;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsConstructor;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getEnumsOfValueMethod;
@@ -127,6 +122,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterString;
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;
@@ -135,15 +131,10 @@
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.brackets;
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.getOmitNullValueString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOperationAttributesGetters;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOverRideString;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getReturnString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodClose;
-import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.methodSignature;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.signatureClose;
import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getAugmentableSubTreeFiltering;
import static org.onosproject.yangutils.translator.tojava.utils.SubtreeFilteringMethodsGenerator.getProcessChildNodeSubtreeFiltering;
@@ -155,52 +146,33 @@
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.addDefaultConstructor;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getBeanFiles;
import static org.onosproject.yangutils.translator.tojava.utils.TranslatorUtils.getTypeFiles;
-import static org.onosproject.yangutils.utils.UtilConstants.ADD;
-import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_CLASS;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER_INTERFACE;
import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT;
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
-import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_PARAMETER_FUNCTION_CALL;
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_CLASS;
-import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_CLASS;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX;
-import static org.onosproject.yangutils.utils.UtilConstants.GET;
-import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER;
-import static org.onosproject.yangutils.utils.UtilConstants.IF;
import static org.onosproject.yangutils.utils.UtilConstants.IMPL_CLASS;
import static org.onosproject.yangutils.utils.UtilConstants.INT;
import static org.onosproject.yangutils.utils.UtilConstants.INTERFACE;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
-import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
-import static org.onosproject.yangutils.utils.UtilConstants.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.QUOTES;
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.SPACE;
import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE;
-import static org.onosproject.yangutils.utils.UtilConstants.TMP_VAL;
-import static org.onosproject.yangutils.utils.UtilConstants.TO;
-import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
-import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
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;
@@ -330,7 +302,6 @@
JavaFileInfoTranslator fileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- YangPluginConfig pluginConfig = fileInfo.getPluginConfig();
boolean leavesPresent;
YangLeavesHolder leavesHolder;
@@ -387,7 +358,7 @@
//Add build method to builder interface file.
methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles()
- .addBuildMethodForInterface(pluginConfig));
+ .addBuildMethodForInterface());
//Add getters and setters in builder interface.
for (String method : methods) {
@@ -413,7 +384,6 @@
JavaFileInfoTranslator fileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- YangPluginConfig config = fileInfo.getPluginConfig();
boolean leavesPresent;
YangLeavesHolder leavesHolder;
@@ -493,8 +463,7 @@
methods.add(((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles()
.addBuildMethodImpl());
- methods.add(addDefaultConstructor(curNode, PUBLIC, BUILDER
- ));
+ methods.add(addDefaultConstructor(curNode, PUBLIC, BUILDER));
//Add methods in builder class.
for (String method : methods) {
@@ -614,8 +583,7 @@
throw new IOException(getErrorMsg(className, IMPL_CLASS));
}
- methods.add(addDefaultConstructor(curNode, PROTECTED, DEFAULT
- ));
+ methods.add(addDefaultConstructor(curNode, PROTECTED, DEFAULT));
methods.add(builderMethod(className));
if (leavesPresent) {
@@ -693,6 +661,11 @@
methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(
TO_STRING_IMPL_MASK, getBeanFiles(curNode), path) +
getToStringMethodClose());
+
+ for (BitsJavaInfoHandler handler : getBeanFiles(curNode)
+ .getBitsHandler()) {
+ generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
+ }
} catch (IOException e) {
throw new IOException(getErrorMsg(className, IMPL_CLASS));
}
@@ -713,8 +686,6 @@
JavaFileInfoTranslator fileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- YangPluginConfig config = fileInfo.getPluginConfig();
-
// import
String className = getCapitalCase(fileInfo.getJavaName());
String path = fileInfo.getBaseCodeGenPath() +
@@ -738,8 +709,7 @@
}
//Default constructor.
- methods.add(addDefaultConstructor(curNode, PRIVATE, EMPTY_STRING
- ));
+ methods.add(addDefaultConstructor(curNode, PRIVATE, EMPTY_STRING));
try {
@@ -768,7 +738,7 @@
getTypeFiles(curNode), path)));
// To string method.
- addTypedefToString(curNode, methods, path, type);
+ addTypedefToString(curNode, methods, path);
JavaCodeGeneratorInfo javaGenInfo = (JavaCodeGeneratorInfo) curNode;
@@ -810,65 +780,21 @@
* @param curNode current node
* @param methods list of methods string
* @param path file path
- * @param type YANG type
* @throws IOException a violation in IO rule
*/
private static void addTypedefToString(YangNode curNode,
- List<String> methods, String path,
- YangType type) throws IOException {
- String methodSig = methodSignature(TO + STRING_DATA_TYPE, EMPTY_STRING,
- PUBLIC, null, STRING_DATA_TYPE, null,
- CLASS_TYPE);
- String methodClose = signatureClose() + methodClose(FOUR_SPACE);
- String openClose = brackets(OPEN_CLOSE_BRACKET, null,
- null);
+ List<String> methods, String path)
+ throws IOException {
//To string method.
- if (type.getDataType() == BINARY) {
- JavaQualifiedTypeInfoTranslator typeInfo =
- getQualifiedTypeInfoOfCurNode(curNode, getCapitalCase
- (UtilConstants.BINARY));
-
- JavaAttributeInfo attr =
- getAttributeInfoForTheData(typeInfo,
- UtilConstants.BINARY,
- null, false, false);
- String attributeName = attr.getAttributeName();
- String bitsToStringMethod = getOverRideString() + methodSig +
- getReturnString(BASE64, EIGHT_SPACE_INDENTATION) +
- PERIOD + GET_ENCODER + brackets(OPEN_CLOSE_BRACKET, null,
- null) +
- PERIOD + ENCODE_TO_STRING + brackets(
- OPEN_CLOSE_BRACKET_WITH_VALUE, attributeName, null) +
- methodClose;
- methods.add(bitsToStringMethod);
- } else if (type.getDataType() == BITS) {
- JavaQualifiedTypeInfoTranslator typeInfo =
- getQualifiedTypeInfoOfCurNode(curNode,
- getCapitalCase(UtilConstants.BITS));
-
- JavaAttributeInfo attr =
- getAttributeInfoForTheData(typeInfo,
- UtilConstants.BITS,
- null, false, false);
- String attributeName = attr.getAttributeName();
- String bitsToStringMethod =
- getOverRideString() + methodSig +
- getToStringForBits(attr.getAttributeName(),
- (YangBits) type.getDataTypeExtendedInfo()) +
- getReturnString(attributeName, EIGHT_SPACE_INDENTATION) +
- PERIOD + TO + STRING_DATA_TYPE + openClose +
- methodClose;
- methods.add(bitsToStringMethod);
- } else {
- methods.add(getToStringMethodOpen() +
- getDataFromTempFileHandle(
- TO_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer)
- curNode)
- .getTempJavaCodeFragmentFiles()
- .getTypeTempFiles(), path) +
- getToStringMethodClose());
+ methods.add(getToStringMethodOpen() +
+ getDataFromTempFileHandle(
+ TO_STRING_IMPL_MASK, getTypeFiles(curNode), path) +
+ getToStringMethodClose());
+ for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
+ .getBitsHandler()) {
+ generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
}
+
}
/**
@@ -886,7 +812,6 @@
JavaFileInfoTranslator fileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- YangPluginConfig config = fileInfo.getPluginConfig();
String className = getCapitalCase(fileInfo.getJavaName());
String path = fileInfo.getBaseCodeGenPath() +
@@ -926,9 +851,11 @@
shortConflict = shortAttr.isShortConflict();
}
if (longConflict) {
- imports.add(tempFiles.getJavaImportData()
- .getBigIntegerImport());
- sort(imports);
+ String impt = tempFiles.getJavaImportData().getBigIntegerImport();
+ if (!imports.contains(impt)) {
+ imports.add(impt);
+ sort(imports);
+ }
}
initiateJavaFileGeneration(file, className, GENERATE_UNION_CLASS,
@@ -945,8 +872,7 @@
}
//Default constructor.
- methods.add(addDefaultConstructor(curNode, PRIVATE, EMPTY_STRING
- ));
+ methods.add(addDefaultConstructor(curNode, PRIVATE, EMPTY_STRING));
try {
@@ -977,11 +903,13 @@
path)));
//To string method.
- methods.add(getToStringMethodOpen() + getOmitNullValueString() +
- getDataFromTempFileHandle(
- TO_STRING_IMPL_MASK,
- getTypeFiles(curNode), path) +
- getToStringMethodClose());
+ methods.add(getUnionToStringMethod(
+ ((YangUnion) curNode).getTypeList()));
+
+ for (BitsJavaInfoHandler handler : getTypeFiles(curNode)
+ .getBitsHandler()) {
+ generateBitsFile(handler.getAttr(), handler.getYangType(), curNode);
+ }
//From string method.
methods.add(getFromStringMethodSignature(className) +
@@ -1054,6 +982,7 @@
insertDataIntoJavaFile(file, getDataFromTempFileHandle(
ATTRIBUTES_MASK, getTypeFiles(curNode), path));
+ insertDataIntoJavaFile(file, getSetValueParaForUnionClass());
}
/**
@@ -1061,23 +990,31 @@
*
* @param file generated file
* @param curNode current YANG node
+ * @param imports import list
* @return class file for type enum
* @throws IOException when fails to generate class file
*/
- public static File generateEnumClassFile(File file, YangNode curNode)
+ public static File generateEnumClassFile(File file, YangNode curNode, List<String> imports)
throws IOException {
JavaFileInfoTranslator fileInfo =
((JavaFileInfoContainer) curNode).getJavaFileInfo();
- YangPluginConfig config = fileInfo.getPluginConfig();
String className = fileInfo.getJavaName();
String path = fileInfo.getBaseCodeGenPath() +
fileInfo.getPackageFilePath();
+ TempJavaEnumerationFragmentFiles enumFile = ((JavaCodeGeneratorInfo)
+ curNode).getTempJavaCodeFragmentFiles().getEnumTempFiles();
+ JavaImportData data = enumFile.getJavaImportData();
+ if (!enumFile.isEnumClass()) {
+ imports.add(data.getImportForToBitSet());
+ imports.add(data.getImportForPattern());
+ imports.add(data.getImportForToString());
+
+ }
initiateJavaFileGeneration(file, getCapitalCase(className),
- GENERATE_ENUM_CLASS, null, path
- );
+ GENERATE_ENUM_CLASS, imports, path);
//Add attribute strings.
try {
@@ -1092,6 +1029,7 @@
ENUM_CLASS));
}
+ insertDataIntoJavaFile(file, NEW_LINE);
// Add an attribute to get the enum's values.
insertDataIntoJavaFile(file, getEnumsValueAttribute(className));
@@ -1113,24 +1051,17 @@
insertDataIntoJavaFile(file, getJavaDoc(GETTER_METHOD, className, false,
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);
- try {
- insertDataIntoJavaFile(file,
- getFromStringMethodSignature(
- getCapitalCase(className)) +
- getDataFromTempFileHandle(
- FROM_STRING_IMPL_MASK,
- ((TempJavaCodeFragmentFilesContainer) curNode)
- .getTempJavaCodeFragmentFiles()
- .getEnumTempFiles(),
- path) + getFromStringMethodClose());
- } catch (IOException e) {
- throw new IOException(getErrorMsg(getCapitalCase(className),
- ENUM_CLASS));
+ if (!enumFile.isEnumClass()) {
+ insertDataIntoJavaFile(file, getBitSetEnumClassFromString
+ (getCapitalCase(className)));
+ insertDataIntoJavaFile(file, getBitSetEnumClassToString(
+ getCapitalCase(className), (YangEnumeration) curNode));
}
insertDataIntoJavaFile(file, CLOSE_CURLY_BRACKET + NEW_LINE);
@@ -1174,13 +1105,11 @@
if (isGetSetOfRootNodeRequired(curNode)) {
//Getter methods.
methods.add(getGetterString(rootAttribute,
- GENERATE_SERVICE_AND_MANAGER
- ) +
+ GENERATE_SERVICE_AND_MANAGER) +
NEW_LINE);
// Setter methods.
methods.add(getSetterString(rootAttribute, className,
- GENERATE_SERVICE_AND_MANAGER
- ) +
+ GENERATE_SERVICE_AND_MANAGER) +
NEW_LINE);
}
@@ -1341,42 +1270,7 @@
*/
private static boolean leavesPresent(YangLeavesHolder holder) {
return holder.getListOfLeaf() != null &&
- !holder.getListOfLeaf().isEmpty() ||
- holder.getListOfLeafList() != null &&
- !holder.getListOfLeafList().isEmpty();
+ !holder.getListOfLeaf().isEmpty();
}
- /**
- * Generates toString code for bits.
- *
- * @param attributeName generated variable for bits
- * @param yangBits parsed yang bits
- * @return generated toString code for bits.
- */
- private static String getToStringForBits(String attributeName, YangBits yangBits) {
- String lines = EIGHT_SPACE_INDENTATION + STRING_DATA_TYPE + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
- QUOTES + QUOTES + SEMI_COLON + NEW_LINE;
- Integer key;
- YangBit bit;
- String bitName;
- for (Map.Entry<Integer, YangBit> entry : yangBits.getBitPositionMap().entrySet()) {
- key = entry.getKey();
- bit = entry.getValue();
- if (bit == null) {
- return null;
- }
-
- bitName = bit.getBitName();
- // Add if condition to check bit position
- lines += EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS + attributeName +
- PERIOD + GET + OPEN_PARENTHESIS + key + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS +
- SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWELVE_SPACE_INDENTATION + TMP_VAL + SPACE +
- ADD + EQUAL + SPACE + QUOTES + bitName + SPACE + QUOTES + SEMI_COLON + NEW_LINE +
- EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
- }
-
- lines += EIGHT_SPACE_INDENTATION + TMP_VAL + PERIOD + TRIM_STRING + EMPTY_PARAMETER_FUNCTION_CALL +
- SEMI_COLON + NEW_LINE;
- return lines;
- }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index c43e41d..a35ea24 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -17,12 +17,11 @@
package org.onosproject.yangutils.translator.tojava.utils;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
-import org.onosproject.yangutils.datamodel.YangBit;
-import org.onosproject.yangutils.datamodel.YangBits;
import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
import org.onosproject.yangutils.datamodel.YangEnum;
import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
@@ -31,14 +30,15 @@
import java.util.LinkedHashMap;
import java.util.List;
-import java.util.Map;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET;
import static org.onosproject.yangutils.translator.tojava.utils.BracketType.OPEN_CLOSE_BRACKET_WITH_VALUE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.EIGHT_SPACE;
import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.FOUR_SPACE;
+import static org.onosproject.yangutils.translator.tojava.utils.IndentationType.TWELVE_SPACE;
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;
@@ -54,13 +54,27 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.CLASS_TYPE;
import static org.onosproject.yangutils.translator.tojava.utils.MethodClassTypes.INTERFACE_TYPE;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.brackets;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getBitSetAttr;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCatchSubString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCompareToString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getForLoopString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getGreaterThanCondition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getIfConditionBegin;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.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;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOverRideString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getParseFromStringMethod;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getPatternQuoteString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getQuotedString;
+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.getTrySubString;
+import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getValueLeafSetString;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifAndAndCondition;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifConditionForIntInTypeDefConstructor;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.ifEqualEqualCondition;
@@ -77,6 +91,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED;
import static org.onosproject.yangutils.utils.UtilConstants.BASE64;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
+import static org.onosproject.yangutils.utils.UtilConstants.BITS;
+import static org.onosproject.yangutils.utils.UtilConstants.BIT_SET;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BUILD;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
@@ -93,8 +109,6 @@
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_CAPS;
import static org.onosproject.yangutils.utils.UtilConstants.EIGHT_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.ELSE;
-import static org.onosproject.yangutils.utils.UtilConstants.ELSE_IF;
-import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_PARAMETER_FUNCTION_CALL;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
@@ -111,10 +125,10 @@
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;
-import static org.onosproject.yangutils.utils.UtilConstants.INTEGER_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.IS_SELECT_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.LEAF_IDENTIFIER;
@@ -124,27 +138,25 @@
import static org.onosproject.yangutils.utils.UtilConstants.MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.NEW;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
+import static org.onosproject.yangutils.utils.UtilConstants.NOT;
import static org.onosproject.yangutils.utils.UtilConstants.NULL;
import static org.onosproject.yangutils.utils.UtilConstants.OBJ;
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.ONE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CLOSE_BRACKET_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.OP_PARAM;
import static org.onosproject.yangutils.utils.UtilConstants.OTHER;
import static org.onosproject.yangutils.utils.UtilConstants.OVERRIDE;
-import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
-import static org.onosproject.yangutils.utils.UtilConstants.PATTERN;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
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.QUOTE_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
-import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
import static org.onosproject.yangutils.utils.UtilConstants.RPC_INPUT_VAR_NAME;
import static org.onosproject.yangutils.utils.UtilConstants.SCHEMA_NAME;
@@ -152,7 +164,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLON;
import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
-import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
+import static org.onosproject.yangutils.utils.UtilConstants.SET_VALUE_PARA;
import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING;
@@ -163,19 +175,17 @@
import static org.onosproject.yangutils.utils.UtilConstants.SWITCH;
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;
import static org.onosproject.yangutils.utils.UtilConstants.TO_CAPS;
+import static org.onosproject.yangutils.utils.UtilConstants.TO_STRING_METHOD;
import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
-import static org.onosproject.yangutils.utils.UtilConstants.TWENTY_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.VALIDATE_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
import static org.onosproject.yangutils.utils.UtilConstants.VALUE_LEAF_SET;
import static org.onosproject.yangutils.utils.UtilConstants.VOID;
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.ZERO;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR;
import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR;
@@ -200,8 +210,6 @@
* Represents generator for methods of generated files based on the file type.
*/
public final class MethodsGenerator {
- private static final String BITS_STRING_ARRAY_VAR = "bitsTemp";
- private static final String BIT_TEMP_VAR = "bitTemp";
private static final String BIT_NAMES_VAR = "bitNames";
private static final String BIT_NAME_VAR = "bitName";
@@ -348,8 +356,8 @@
return getGetter(attrQualifiedType, attributeName,
generatedJavaFiles);
}
- String attrParam = StringGenerator.getListAttribute(attrQualifiedType,
- attr.getCompilerAnnotation());
+ String attrParam = getListAttribute(attrQualifiedType,
+ attr.getCompilerAnnotation());
return getGetter(attrParam, attributeName, generatedJavaFiles);
}
@@ -371,7 +379,7 @@
//Append method body.
.append(methodBody(MANAGER_METHODS, null, null,
EIGHT_SPACE_INDENTATION, null,
- type, false))
+ type, false, null))
.append(signatureClose())
//Append method close.
.append(methodClose(FOUR_SPACE));
@@ -383,7 +391,7 @@
//Append method body.
.append(methodBody(GETTER, name, name,
EIGHT_SPACE_INDENTATION, null,
- type, false))
+ type, false, null))
.append(signatureClose())
//Append method close.
.append(methodClose(FOUR_SPACE));
@@ -411,8 +419,8 @@
return getSetter(className, attributeName, attrQualifiedType,
generatedJavaFiles, isTypeNull, false);
}
- String attrParam = StringGenerator.getListAttribute(attrQualifiedType,
- attr.getCompilerAnnotation());
+ String attrParam = getListAttribute(attrQualifiedType,
+ attr.getCompilerAnnotation());
return getSetter(className, attributeName, attrParam,
generatedJavaFiles, isTypeNull, true);
}
@@ -440,7 +448,7 @@
//Append method body.
.append(methodBody(MANAGER_METHODS, null, null,
EIGHT_SPACE_INDENTATION, null, null,
- false))
+ false, null))
.append(methodClose(FOUR_SPACE));
return builder.toString();
}
@@ -451,7 +459,7 @@
//Append method body.
.append(methodBody(SETTER, name, name,
EIGHT_SPACE_INDENTATION, null, null,
- false))
+ false, null))
.append(methodClose(FOUR_SPACE));
return builder.toString();
}
@@ -459,14 +467,14 @@
PUBLIC, name, getCapitalCase(className) +
BUILDER, type, CLASS_TYPE));
if (!isTypeNull && !isList) {
- builder.append(StringGenerator.getValueLeafSetString(name));
+ builder.append(getValueLeafSetString(name));
} else {
builder.append(EMPTY_STRING);
}
//Append method body.
builder.append(methodBody(SETTER, name, name,
EIGHT_SPACE_INDENTATION, null, null,
- true))
+ true, null))
//Append method close.
.append(methodClose(FOUR_SPACE));
return builder.toString();
@@ -496,7 +504,7 @@
return methodSignature(getCapitalCase(name), SET_METHOD_PREFIX, PUBLIC,
name, VOID, type, CLASS_TYPE) +
methodBody(SETTER, name, name, EIGHT_SPACE_INDENTATION, null,
- null, false) + methodClose(FOUR_SPACE);
+ null, false, null) + methodClose(FOUR_SPACE);
}
/**
@@ -517,7 +525,7 @@
return getGetterInterfaceString(returnType, yangName,
genType);
}
- String listAttr = StringGenerator.getListAttribute(returnType, annotation);
+ String listAttr = getListAttribute(returnType, annotation);
return getGetterInterfaceString(listAttr, yangName, genType);
}
@@ -560,7 +568,7 @@
genType);
}
- String listAttr = StringGenerator.getListAttribute(attrType, annotation);
+ String listAttr = getListAttribute(attrType, annotation);
return getSetterInterfaceString(className, attrName, listAttr, genType);
}
@@ -653,11 +661,11 @@
case GENERATE_SERVICE_AND_MANAGER:
return methodBody(MethodBodyTypes.CONSTRUCTOR, attrName,
attrCaps, EIGHT_SPACE_INDENTATION, GET, null,
- false);
+ false, null);
default:
return methodBody(MethodBodyTypes.CONSTRUCTOR, attrName,
attrName, EIGHT_SPACE_INDENTATION, EMPTY_STRING,
- null, false);
+ null, false, null);
}
}
@@ -697,7 +705,7 @@
CLASS_TYPE) +
methodBody(MethodBodyTypes.BUILD, type, BUILD,
EIGHT_SPACE_INDENTATION, EMPTY_STRING,
- null, false) +
+ null, false, null) +
methodClose(FOUR_SPACE);
}
@@ -721,14 +729,13 @@
* @return string method's open string
*/
static String getToStringMethodOpen() {
- String line;
StringBuilder builder = new StringBuilder(getOverRideString());
- builder.append(methodSignature(TO + STRING_DATA_TYPE, EMPTY_STRING,
+ builder.append(methodSignature(TO_STRING_METHOD, EMPTY_STRING,
PUBLIC, null, STRING_DATA_TYPE, null,
CLASS_TYPE));
- line = getReturnString(GOOGLE_MORE_OBJECT_METHOD_STRING,
- EIGHT_SPACE_INDENTATION) + NEW_LINE;
- builder.append(line);
+ builder.append(getReturnString(GOOGLE_MORE_OBJECT_METHOD_STRING,
+ EIGHT_SPACE_INDENTATION)).append(NEW_LINE)
+ .append(getOmitNullValueString());
return builder.toString();
}
@@ -738,7 +745,7 @@
* @return to string method close string
*/
static String getToStringMethodClose() {
- return TWELVE_SPACE_INDENTATION + PERIOD + TO + STRING_DATA_TYPE +
+ return TWELVE_SPACE_INDENTATION + PERIOD + TO_STRING_METHOD +
brackets(OPEN_CLOSE_BRACKET, null, null) + signatureClose() +
methodClose(FOUR_SPACE);
}
@@ -746,13 +753,12 @@
/**
* Returns to string method for class.
*
- * @param attr attribute info
- * @return to string method
+ * @param attr java attribute
+ * @return to string method for class
*/
public static String getToStringMethod(JavaAttributeInfo attr) {
- String attributeName = attr.getAttributeName();
- return methodBody(TO_STRING, attributeName, null,
- TWELVE_SPACE_INDENTATION, null, null, false);
+ return methodBody(TO_STRING, attr.getAttributeName(), null,
+ TWELVE_SPACE_INDENTATION, null, null, false, null);
}
/**
@@ -785,19 +791,18 @@
* @param attr attribute info
* @param fromAttr attribute info for the from string wrapper
* type
+ * @param name class name
* @return from string method's body string
*/
public static String getFromStringMethod(JavaAttributeInfo attr,
- JavaAttributeInfo fromAttr) {
+ JavaAttributeInfo fromAttr, String name) {
- return EIGHT_SPACE_INDENTATION + StringGenerator.getTrySubString() +
- StringGenerator.getNewLineAndSpace(TWELVE_SPACE_INDENTATION) +
- getParsedSubString(attr, fromAttr) +
- StringGenerator.getNewLineAndSpace(FOUR_SPACE_INDENTATION) +
- StringGenerator.getReturnOfSubString() +
- StringGenerator.getNewLineAndSpace(EIGHT_SPACE_INDENTATION) +
- StringGenerator.getCatchSubString() +
- StringGenerator.getNewLineAndSpace(EIGHT_SPACE_INDENTATION) +
+ return EIGHT_SPACE_INDENTATION + getTrySubString() +
+ getNewLineAndSpace(TWELVE_SPACE_INDENTATION) +
+ getParsedSubString(attr, fromAttr, name) +
+ getReturnOfSubString() + EIGHT_SPACE_INDENTATION +
+ getCatchSubString() +
+ getNewLineAndSpace(EIGHT_SPACE_INDENTATION) +
CLOSE_CURLY_BRACKET;
}
@@ -805,35 +810,52 @@
* Returns sub string with parsed statement for union's from string method.
*
* @param attr attribute info
+ * @param name class name
* @return sub string with parsed statement for union's from string method
*/
private static String getParsedSubString(JavaAttributeInfo attr,
- JavaAttributeInfo fromStringAttr) {
+ JavaAttributeInfo fromStringAttr, String name) {
String targetDataType = getReturnType(attr);
- StringBuilder builder = new StringBuilder();
YangDataTypes types = fromStringAttr.getAttributeType()
.getDataType();
+ StringBuilder method = new StringBuilder();
switch (types) {
case BITS:
- return getFromStringForBits(attr, (YangBits) fromStringAttr.getAttributeType()
- .getDataTypeExtendedInfo());
+ return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL +
+ SPACE + getCapitalCase(name) + getCapitalCase(attr.getAttributeName()) +
+ PERIOD + FROM_STRING_METHOD_NAME +
+ brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
+ FROM_STRING_PARAM_NAME, null) + signatureClose();
case BINARY:
- return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE +
- BASE64 + PERIOD + GET_DECODER + OPEN_PARENTHESIS +
- CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS +
- FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLON
- + NEW_LINE;
+ return method.append(targetDataType).append(SPACE).append(TMP_VAL)
+ .append(SPACE).append(EQUAL).append(SPACE).append(
+ geStringConverterForBinary(FROM_STRING_PARAM_NAME))
+ .append(signatureClose()).toString();
default:
return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL +
- SPACE + StringGenerator.getParseFromStringMethod(
+ SPACE + getParseFromStringMethod(
targetDataType, fromStringAttr.getAttributeType()) +
- OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME +
- CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE;
+ brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
+ FROM_STRING_PARAM_NAME, null) + signatureClose();
}
}
/**
+ * Returns to string converter for binary type.
+ *
+ * @param var variable name
+ * @return to string method body
+ */
+ private static String geStringConverterForBinary(String var) {
+ StringBuilder builder = new StringBuilder();
+ return builder.append(BASE64).append(PERIOD)
+ .append(GET_DECODER).append(OPEN_CLOSE_BRACKET_STRING).append(PERIOD)
+ .append(DECODE).append(brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
+ var, null)).toString();
+ }
+
+ /**
* Returns hash code method open strings.
*
* @return hash code method open string
@@ -971,7 +993,7 @@
return methodSignature(OF, EMPTY_STRING, PUBLIC + SPACE + STATIC,
VALUE, name, type, CLASS_TYPE) +
methodBody(MethodBodyTypes.OF_METHOD, name, null,
- EIGHT_SPACE_INDENTATION, EMPTY_STRING, null, false) +
+ EIGHT_SPACE_INDENTATION, EMPTY_STRING, null, false, null) +
methodClose(FOUR_SPACE);
}
@@ -980,14 +1002,17 @@
*
* @param attr attribute info
* @param className class name
+ * @param genType generate file type
+ * @param count type count
* @return string and java doc for constructor of type class
*/
public static String getTypeConstructorStringAndJavaDoc(
- JavaAttributeInfo attr, String className) {
+ JavaAttributeInfo attr, String className, int genType, int count) {
String attrType = getReturnType(attr);
String attrName = attr.getAttributeName();
return getJavaDoc(TYPE_CONSTRUCTOR, attrName, false, null) +
- getTypeConstructorString(attrType, attrName, className);
+ getTypeConstructorString(attrType, attrName, className,
+ genType, count);
}
/**
@@ -998,11 +1023,12 @@
* @param genType class name
* @param type conflict validate type
* @param addFirst whether int came first or uInt came first
+ * @param count type count
* @return string and java doc for constructor of type class
*/
public static String getTypeConstructorStringAndJavaDoc(
JavaAttributeInfo attr1, JavaAttributeInfo attr2, String genType,
- ValidatorTypeForUnionTypes type, boolean addFirst) {
+ ValidatorTypeForUnionTypes type, boolean addFirst, int count) {
String attrType = getReturnType(attr1);
String attrName1 = "";
@@ -1016,9 +1042,9 @@
}
if (attr2 != null) {
if (addFirst) {
- attrName1 = attr2.getAttributeName();
- } else {
attrName2 = attr2.getAttributeName();
+ } else {
+ attrName1 = attr2.getAttributeName();
}
}
@@ -1037,7 +1063,7 @@
return getJavaDoc(TYPE_CONSTRUCTOR, doc, false, appDataStructure) +
getTypeConstructorString(attrType, attrName1,
attrName2, genType,
- type, addFirst);
+ type, addFirst, count);
}
/**
@@ -1046,14 +1072,26 @@
* @param type data type
* @param name attribute name
* @param className class name
+ * @param genType generated file type
+ * @param count type count
* @return type constructor string
*/
private static String getTypeConstructorString(String type, String name,
- String className) {
- return methodSignature(className, EMPTY_STRING, PUBLIC, name,
- null, type, CLASS_TYPE) +
- methodBody(SETTER, name, null, EIGHT_SPACE_INDENTATION,
- EMPTY_STRING, null, false) + methodClose(FOUR_SPACE);
+ String className, int genType, int count) {
+ StringBuilder builder = new StringBuilder();
+ builder.append(
+ methodSignature(className, EMPTY_STRING, PUBLIC, name,
+ null, type, CLASS_TYPE));
+ if (genType == GENERATE_UNION_CLASS) {
+ builder.append(EIGHT_SPACE_INDENTATION).append(SET_VALUE_PARA)
+ .append(PERIOD).append(SET_METHOD_PREFIX).append(
+ brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, count + EMPTY_STRING,
+ null)).append(signatureClose());
+ }
+ builder.append(methodBody(SETTER, name, null, EIGHT_SPACE_INDENTATION,
+ EMPTY_STRING, null, false, null))
+ .append(methodClose(FOUR_SPACE));
+ return builder.toString();
}
/**
@@ -1062,26 +1100,30 @@
* @param type data type
* @param attr1 attribute attr1
* @param className class attr1
+ * @param count type count
* @return type constructor string
*/
private static String getTypeConstructorString(
String type, String attr1, String attr2, String className,
- ValidatorTypeForUnionTypes validatorType, boolean addInt) {
-
+ ValidatorTypeForUnionTypes validatorType, boolean addInt, int count) {
StringBuilder constructor = new StringBuilder(
- methodSignature(className, EMPTY_STRING, null, type,
+ methodSignature(className, EMPTY_STRING, PUBLIC, attr1,
null, type, CLASS_TYPE))
+ .append(EIGHT_SPACE_INDENTATION).append(SET_VALUE_PARA)
+ .append(PERIOD).append(SET_METHOD_PREFIX).append(
+ brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, count + EMPTY_STRING,
+ null)).append(signatureClose())
.append(ifConditionForIntInTypeDefConstructor(validatorType,
- addInt))
+ addInt, attr1))
.append(methodBody(SETTER, attr1, null,
TWELVE_SPACE_INDENTATION, EMPTY_STRING,
- null, false));
+ null, false, attr1));
String str = EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + SPACE +
ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
constructor.append(str)
.append(methodBody(SETTER, attr2, null,
TWELVE_SPACE_INDENTATION, EMPTY_STRING,
- null, false))
+ null, false, attr1))
.append(methodClose(FOUR_SPACE))
.append(methodClose(EIGHT_SPACE));
@@ -1096,8 +1138,8 @@
static String getAddAugmentInfoMethodInterface() {
StringBuilder builder = new StringBuilder(generateForAddAugmentation());
LinkedHashMap<String, String> map = new LinkedHashMap<>();
- map.put(OBJECT_STRING, VALUE);
- map.put(CLASS_STRING, CLASS + OBJECT_STRING);
+ 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));
@@ -1112,13 +1154,13 @@
static String getAddAugmentInfoMethodImpl() {
StringBuilder builder = new StringBuilder(getOverRideString());
LinkedHashMap<String, String> map = new LinkedHashMap<>();
- map.put(OBJECT_STRING, VALUE);
- map.put(CLASS_STRING, CLASS + OBJECT_STRING);
+ 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))
.append(methodBody(AUGMENTED_MAP_ADD, null, null,
- EIGHT_SPACE_INDENTATION, null, null, false))
+ EIGHT_SPACE_INDENTATION, null, null, false, null))
.append(methodClose(FOUR_SPACE))
.append(NEW_LINE);
return builder.toString();
@@ -1147,7 +1189,7 @@
PUBLIC, CLASS + OBJECT_STRING, OBJECT_STRING,
CLASS_STRING, CLASS_TYPE) +
methodBody(AUGMENTED_MAP_GET_VALUE, null, null,
- EIGHT_SPACE_INDENTATION, null, null, false) +
+ EIGHT_SPACE_INDENTATION, null, null, false, null) +
methodClose(FOUR_SPACE);
}
@@ -1175,7 +1217,7 @@
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) +
+ EIGHT_SPACE_INDENTATION, null, null, false, null) +
methodClose(FOUR_SPACE);
}
@@ -1189,17 +1231,17 @@
StringBuilder builder = new StringBuilder();
String clsName = getSmallCase(className);
LinkedHashMap<String, String> map = new LinkedHashMap<>();
- map.put(INT, clsName);
- map.put(STRING_DATA_TYPE, SCHEMA_NAME);
+ map.put(clsName, INT);
+ map.put(SCHEMA_NAME, STRING_DATA_TYPE);
builder.append(multiAttrMethodSignature(className, EMPTY_STRING,
EMPTY_STRING, null,
map, CLASS_TYPE))
.append(methodBody(SETTER, clsName, EMPTY_STRING,
EIGHT_SPACE_INDENTATION, EMPTY_STRING,
- EMPTY_STRING, false))
+ EMPTY_STRING, false, null))
.append(methodBody(SETTER, SCHEMA_NAME, EMPTY_STRING,
EIGHT_SPACE_INDENTATION, EMPTY_STRING,
- EMPTY_STRING, false))
+ EMPTY_STRING, false, null))
.append(methodClose(FOUR_SPACE));
return builder.toString();
@@ -1439,7 +1481,7 @@
String name,
boolean isRoot) {
String attrName = attr.getAttributeName();
- String retString = "";
+ String retString = EMPTY_STRING;
if (!isRoot) {
retString = getOverRideString();
}
@@ -1505,8 +1547,8 @@
" * @return match result\n" +
" */\n";
LinkedHashMap<String, String> map = new LinkedHashMap<>();
- map.put(name, getSmallCase(name));
- map.put(BOOLEAN_DATA_TYPE, SELECT_ALL_CHILD);
+ map.put(getSmallCase(name), name);
+ map.put(SELECT_ALL_CHILD, BOOLEAN_DATA_TYPE);
return method + multiAttrMethodSignature(PROCESS_SUBTREE_FILTERING,
EMPTY_STRING, EMPTY_STRING,
@@ -1604,56 +1646,115 @@
/**
* Generates fromString code for bits.
*
- * @param attr attribute information
- * @param yangBits parsed yang bits
* @return generated fromString code for bits.
*/
- private static String getFromStringForBits(JavaAttributeInfo attr, YangBits yangBits) {
- String targetDataType = getReturnType(attr);
- String key;
- YangBit bit;
+ private static String getFromStringForBits(String bitClassName) {
+ StringBuilder sBuild = new StringBuilder();
+ sBuild.append(methodSignature(FROM_STRING_METHOD_NAME, null,
+ PUBLIC + SPACE + STATIC,
+ FROM_STRING_PARAM_NAME,
+ BIT_SET, STRING_DATA_TYPE, CLASS_TYPE))
+ .append(EIGHT_SPACE_INDENTATION)
+ .append(getBitSetAttr(EMPTY_STRING));
// Split the input string and check each bit name falls in configured yang file
- String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType +
- OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
- TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BIT_NAMES_VAR + SPACE +
- EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + TRIM_STRING + EMPTY_PARAMETER_FUNCTION_CALL +
- PERIOD + SPLIT_STRING + OPEN_PARENTHESIS + PATTERN + PERIOD + QUOTE_STRING +
- OPEN_PARENTHESIS + QUOTES + SPACE + QUOTES + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLON +
- NEW_LINE +
- TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE + BIT_NAME_VAR +
- SPACE + COLON + SPACE + BIT_NAMES_VAR + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE;
- boolean firstIf = true;
- String ifCondition = IF;
- for (Map.Entry<String, YangBit> entry : yangBits.getBitNameMap().entrySet()) {
- key = entry.getKey();
- bit = entry.getValue();
- if (bit == null) {
- return null;
- }
- if (firstIf) {
- lines += SIXTEEN_SPACE_INDENTATION;
- }
- // Add condition checking for bit name
- lines += ifCondition + SPACE + OPEN_PARENTHESIS + BIT_NAME_VAR + PERIOD +
- EQUALS_STRING + OPEN_PARENTHESIS + QUOTES + key + QUOTES + CLOSE_PARENTHESIS + CLOSE_PARENTHESIS +
- SPACE + OPEN_CURLY_BRACKET + NEW_LINE +
- TWENTY_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS +
- bit.getPosition() + CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION +
- CLOSE_CURLY_BRACKET;
- if (firstIf) {
- ifCondition = SPACE + ELSE_IF;
- firstIf = false;
- }
- }
+ sBuild.append(EIGHT_SPACE_INDENTATION).append(STRING_DATA_TYPE)
+ .append(SQUARE_BRACKETS).append(SPACE).append(BIT_NAMES_VAR)
+ .append(SPACE).append(EQUAL).append(SPACE).append(FROM_STRING_PARAM_NAME)
+ .append(PERIOD).append(TRIM_STRING).append(OPEN_CLOSE_BRACKET_STRING)
+ .append(PERIOD).append(SPLIT_STRING).append(brackets(
+ OPEN_CLOSE_BRACKET_WITH_VALUE, getPatternQuoteString(SPACE),
+ null)).append(signatureClose()).append(getForLoopString(
+ EIGHT_SPACE_INDENTATION, STRING_DATA_TYPE, BIT_NAME_VAR,
+ BIT_NAMES_VAR));
- if (!firstIf) {
- // This means at least one if condition is added in code generation
- // Now add else condition for validation
- lines += SPACE + ELSE + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + TWENTY_SPACE_INDENTATION + RETURN +
- SPACE + NULL + SEMI_COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION + CLOSE_CURLY_BRACKET;
- }
+ String small = getSmallCase(bitClassName);
+ sBuild.append(TWELVE_SPACE_INDENTATION).append(bitClassName).append
+ (SPACE).append(small).append(SPACE).append(EQUAL).append
+ (SPACE).append(bitClassName).append(PERIOD).append(OF).append
+ (brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, BIT_NAME_VAR, null))
+ .append(signatureClose());
+ String condition = small + SPACE + NOT + EQUAL + SPACE + NULL;
+ sBuild.append(getIfConditionBegin(TWELVE_SPACE_INDENTATION, condition))
+ .append(TWELVE_SPACE_INDENTATION)
+ .append(TMP_VAL).append(PERIOD).append(SET_METHOD_PREFIX)
+ .append(OPEN_PARENTHESIS)
+ .append(small).append(PERIOD).append(small).append(
+ OPEN_CLOSE_BRACKET_STRING).append(CLOSE_PARENTHESIS)
+ .append(signatureClose()).append(methodClose(TWELVE_SPACE))
+ .append(methodClose(EIGHT_SPACE));
+ sBuild.append(getReturnString(TMP_VAL, EIGHT_SPACE_INDENTATION))
+ .append(signatureClose()).append(methodClose(FOUR_SPACE));
+ return sBuild.toString();
+ }
- lines += NEW_LINE + TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
- return lines;
+ /**
+ * Returns union class's to string method.
+ *
+ * @param types list of types
+ * @return union class's to string method
+ */
+ static String getUnionToStringMethod(List<YangType<?>> types) {
+
+ StringBuilder builder = new StringBuilder(getOverRideString());
+ builder.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, null,
+ STRING_DATA_TYPE, null, CLASS_TYPE))
+ .append(getMoreObjectAttr());
+ 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))
+ .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())
+ .append(methodClose(FOUR_SPACE));
+ return builder.toString();
+ }
+
+ /**
+ * Returns from string method for bits class.
+ *
+ * @param className bits class name
+ * @return from string method for bits class
+ */
+ static String getBitSetEnumClassFromString(String className) {
+ return getJavaDoc(FROM_METHOD, className, false, null) +
+ getFromStringForBits(className);
+ }
+
+ static String getBitSetEnumClassToString(String className,
+ YangEnumeration enumeration) {
+
+ StringBuilder builder = new StringBuilder();
+ builder.append(methodSignature(TO_STRING_METHOD, null, PUBLIC, BITS,
+ STRING_DATA_TYPE, BIT_SET, CLASS_TYPE))
+ .append(getMoreObjectAttr());
+ String condition;
+ String name;
+ for (YangEnum yangEnum : enumeration.getEnumSet()) {
+ name = yangEnum.getNamedValue();
+ condition = BITS + PERIOD + GET + OPEN_PARENTHESIS +
+ className + PERIOD + getEnumJavaAttribute(name).toUpperCase()
+ + PERIOD + getSmallCase(className)
+ + OPEN_CLOSE_BRACKET_STRING + CLOSE_PARENTHESIS;
+
+
+ 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(getQuotedString(name)).append(CLOSE_PARENTHESIS)
+ .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())
+ .append(methodClose(FOUR_SPACE));
+ return builder.toString();
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
index 6d5a14c..c0d05b0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/StringGenerator.java
@@ -41,9 +41,11 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getIfConditionForAddToListMethod;
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.AT;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL;
import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER;
+import static org.onosproject.yangutils.utils.UtilConstants.BITSET;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE;
import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.BUILDER;
@@ -74,6 +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.IF;
import static org.onosproject.yangutils.utils.UtilConstants.IMPLEMENTS;
import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
@@ -88,12 +91,14 @@
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;
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.OMIT_NULL_VALUE_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.OVERRIDE;
@@ -102,19 +107,24 @@
import static org.onosproject.yangutils.utils.UtilConstants.PARSE_INT;
import static org.onosproject.yangutils.utils.UtilConstants.PARSE_LONG;
import static org.onosproject.yangutils.utils.UtilConstants.PARSE_SHORT;
+import static org.onosproject.yangutils.utils.UtilConstants.PATTERN;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
import static org.onosproject.yangutils.utils.UtilConstants.PUT;
import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
import static org.onosproject.yangutils.utils.UtilConstants.QUOTES;
+import static org.onosproject.yangutils.utils.UtilConstants.QUOTE_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.RETURN;
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;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
+import static org.onosproject.yangutils.utils.UtilConstants.STRING_BUILDER;
+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.TRY;
@@ -136,7 +146,6 @@
/**
* Represents string generator for translator.
*/
-@SuppressWarnings("HardcodedFileSeparator")
public final class StringGenerator {
private StringGenerator() {
@@ -203,8 +212,8 @@
static String getNewInstance(String returnType, String varName,
String space, String value) {
return space + returnType + SPACE + varName + SPACE + EQUAL + SPACE +
- NEW + returnType + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
- value, null) + signatureClose();
+ NEW + SPACE + returnType + brackets(
+ OPEN_CLOSE_BRACKET_WITH_VALUE, value, null) + signatureClose();
}
/**
@@ -270,20 +279,24 @@
* @param prefix prefix for internal method
* @param paramType parameter type
* @param isBuilderSetter is for builder setter
+ * @param setterVal value to set in setter
* @return body of the method
*/
static String methodBody(MethodBodyTypes type, String paraName,
String methodName,
String space, String prefix,
- String paramType, boolean isBuilderSetter) {
+ String paramType, boolean isBuilderSetter, String setterVal) {
StringBuilder builder = new StringBuilder();
String body;
switch (type) {
case GETTER:
return getReturnString(paraName, space);
case SETTER:
+ if (setterVal == null) {
+ setterVal = paraName;
+ }
body = space + THIS + PERIOD + paraName + SPACE + EQUAL + SPACE +
- paraName + signatureClose();
+ setterVal + signatureClose();
builder.append(body);
if (isBuilderSetter) {
body = getReturnString(THIS + signatureClose(), space);
@@ -341,8 +354,7 @@
OPEN_CLOSE_BRACKET_WITH_VALUE, VALUE, null)
+ signatureClose(), space);
case TO_STRING:
- return space + PERIOD + ADD_STRING + OPEN_PARENTHESIS + QUOTES +
- paraName + QUOTES + COMMA + SPACE + paraName +
+ return getToStringMethodsAddString(space, paraName) + paraName +
CLOSE_PARENTHESIS;
case EQUALS_METHOD:
default:
@@ -351,6 +363,18 @@
}
/**
+ * Returns to string method's add string.
+ *
+ * @param space indentation
+ * @param paraName parameter name
+ * @return to string method's add string
+ */
+ static String getToStringMethodsAddString(String space, String paraName) {
+ return space + PERIOD + ADD_STRING + OPEN_PARENTHESIS +
+ getQuotedString(paraName) + COMMA + SPACE;
+ }
+
+ /**
* Returns end of line.
*
* @return end of line
@@ -462,6 +486,9 @@
method = modifier + SPACE;
}
methodBuilder.append(method);
+ if (prefix == null) {
+ prefix = EMPTY_STRING;
+ }
if (methodReturnType != null) {
method = methodReturnType + SPACE + prefix + methodName;
} else {
@@ -471,7 +498,7 @@
methodBuilder.append(method)
.append(OPEN_PARENTHESIS);
for (Map.Entry<String, String> param : params.entrySet()) {
- methodBuilder.append(methodParam(param.getKey(), param.getValue()));
+ methodBuilder.append(methodParam(param.getValue(), param.getKey()));
methodBuilder.append(commaWithSpace());
}
String para = methodBuilder.toString();
@@ -505,6 +532,9 @@
if (modifier != null) {
method = modifier + SPACE;
}
+ if (prefix == null) {
+ prefix = EMPTY_STRING;
+ }
methodBuilder.append(method);
if (methodReturnType != null) {
method = methodReturnType + SPACE + prefix + methodName;
@@ -637,10 +667,11 @@
*
* @param type type of conflict
* @param addFirst true int/long need to be added first
+ * @param val value to set
* @return if condition string for typedef constructor
*/
static String ifConditionForIntInTypeDefConstructor(ValidatorTypeForUnionTypes type,
- boolean addFirst) {
+ boolean addFirst, String val) {
String condition =
EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS +
VALIDATE_RANGE + OPEN_PARENTHESIS;
@@ -649,28 +680,28 @@
case INT_TYPE_CONFLICT:
if (addFirst) {
condition = condition + INT_MIN_RANGE + COMMA + SPACE +
- INT_MAX_RANGE + COMMA + SPACE + VALUE;
+ INT_MAX_RANGE + COMMA + SPACE + val;
} else {
condition = condition + UINT_MIN_RANGE + COMMA + SPACE +
- UINT_MAX_RANGE + COMMA + SPACE + VALUE;
+ UINT_MAX_RANGE + COMMA + SPACE + val;
}
break;
case LONG_TYPE_CONFLICT:
if (addFirst) {
condition = condition + LONG_MIN_RANGE + COMMA + SPACE +
- LONG_MAX_RANGE + COMMA + SPACE + VALUE;
+ LONG_MAX_RANGE + COMMA + SPACE + val;
} else {
condition = condition + ULONG_MIN_RANGE + COMMA + SPACE +
- ULONG_MAX_RANGE + COMMA + SPACE + VALUE;
+ ULONG_MAX_RANGE + COMMA + SPACE + val;
}
break;
case SHORT_TYPE_CONFLICT:
if (addFirst) {
condition = condition + SHORT_MIN_RANGE + COMMA + SPACE +
- SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
+ SHORT_MAX_RANGE + COMMA + SPACE + val;
} else {
condition = condition + UINT8_MIN_RANGE + COMMA + SPACE +
- UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
+ UINT8_MAX_RANGE + COMMA + SPACE + val;
}
break;
default:
@@ -717,10 +748,10 @@
case EMPTY:
case BOOLEAN:
return BOOLEAN_WRAPPER + PERIOD + PARSE_BOOLEAN;
- case BITS:
- case UNION:
case ENUMERATION:
+ return targetDataType + PERIOD + OF;
case DERIVED:
+ case UNION:
return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
default:
throw new TranslatorException("given data type is not " +
@@ -752,7 +783,7 @@
* @return sub string with return statement for union's from string method
*/
static String getReturnOfSubString() {
- return getReturnString(OF, EIGHT_SPACE_INDENTATION) +
+ return getReturnString(OF, TWELVE_SPACE_INDENTATION) +
brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, TMP_VAL, null) +
signatureClose();
}
@@ -1054,4 +1085,109 @@
.append(line).append(AT).append(position).append(IN)
.append(fileName).toString();
}
+
+ /**
+ * Returns string builder attribute string;
+ *
+ * @param init first param to be appended to string builder
+ * @param space indentation space
+ * @return string builder attribute
+ */
+ static String getStringBuilderAttr(String init, String space) {
+ StringBuilder builder = new StringBuilder(space);
+ builder.append(STRING_BUILDER).append(SPACE).append(STRING_BUILDER_VAR)
+ .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+ .append(SPACE).append(STRING_BUILDER).append(
+ brackets(OPEN_CLOSE_BRACKET_WITH_VALUE, getQuotedString(init), null))
+ .append(signatureClose());
+ return builder.toString();
+ }
+
+ /**
+ * Returns quoted string.
+ *
+ * @param name name to be quoted
+ * @return quoted string
+ */
+ static String getQuotedString(String name) {
+ return QUOTES + name + QUOTES;
+ }
+
+ /**
+ * Returns string builder's append string.
+ *
+ * @param append data to be append
+ * @param space indentation
+ * @return string builder's append string
+ */
+ static String getStringBuilderAppendString(String append, String space) {
+ return space + STRING_BUILDER_VAR + PERIOD + APPEND + OPEN_PARENTHESIS +
+ append + CLOSE_PARENTHESIS + signatureClose();
+ }
+
+ /**
+ * Returns pattern quote string.
+ *
+ * @param type type for pattern is needed
+ * @return pattern quote string
+ */
+ static String getPatternQuoteString(String type) {
+ return PATTERN + PERIOD + QUOTE_STRING + brackets(
+ OPEN_CLOSE_BRACKET_WITH_VALUE, getQuotedString(type), null);
+ }
+
+ /**
+ * Returns bitset attribute.
+ *
+ * @param indentation indentation
+ * @return bitset attribute
+ */
+ static String getBitSetAttr(String indentation) {
+ StringBuilder builder = new StringBuilder(indentation);
+ return builder.append(BITSET).append(SPACE).append(TMP_VAL)
+ .append(SPACE).append(EQUAL).append(SPACE).append(NEW)
+ .append(SPACE).append(BITSET).append(OPEN_CLOSE_BRACKET_STRING)
+ .append(signatureClose()).toString();
+ }
+
+ /**
+ * Returns for loop string
+ *
+ * @param space indentation
+ * @param type data type
+ * @param var variable
+ * @param data data variable/collection
+ * @return for loop string
+ */
+ static String getForLoopString(String space, String type, String var,
+ String data) {
+ return space + FOR + SPACE + OPEN_PARENTHESIS + type + SPACE + var +
+ SPACE + COLON + SPACE + data + CLOSE_PARENTHESIS +
+ methodSignatureClose(CLASS_TYPE);
+ }
+
+ /**
+ * Returns set value parameter's get string for union to string method.
+ *
+ * @param count count of type
+ * @return get string
+ */
+ static String getSetValueParaCondition(int count) {
+ return SET_VALUE_PARA + PERIOD + GET + brackets(OPEN_CLOSE_BRACKET_WITH_VALUE,
+ count + EMPTY_STRING, null);
+ }
+
+ /**
+ * Returns more object attr for union to string method.
+ *
+ * @return more object attr for union to string method
+ */
+ static String getMoreObjectAttr() {
+ StringBuilder attr = new StringBuilder(EIGHT_SPACE_INDENTATION);
+ String[] array = {NEW_LINE};
+ attr.append(MORE_OBJ_ATTR).append(GOOGLE_MORE_OBJECT_METHOD_STRING)
+ .append(NEW_LINE).append(FOUR_SPACE_INDENTATION).append(trimAtLast(
+ getOmitNullValueString(), array)).append(signatureClose());
+ return attr.toString();
+ }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
index e1b4913..f7229a2 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/SubtreeFilteringMethodsGenerator.java
@@ -57,7 +57,7 @@
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.EMPTY_PARAMETER_FUNCTION_CALL;
+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;
@@ -144,7 +144,7 @@
attrQualifiedType = getIfFilterContentMatchMethodImpl(attributeName,
type);
return EIGHT_SPACE_INDENTATION + IF + SPACE + OPEN_PARENTHESIS
- + GET_VALUE_LEAF_FLAGS + EMPTY_PARAMETER_FUNCTION_CALL +
+ + GET_VALUE_LEAF_FLAGS + OPEN_CLOSE_BRACKET_STRING +
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 + EMPTY_PARAMETER_FUNCTION_CALL +
+ GET_SELECT_LEAF_FLAGS + OPEN_CLOSE_BRACKET_STRING +
PERIOD + GET_METHOD_PREFIX + OPEN_PARENTHESIS +
LEAF_IDENTIFIER + PERIOD + attributeName.toUpperCase() +
PERIOD + GET_LEAF_INDEX + CLOSE_PARENTHESIS + SPACE +
@@ -174,7 +174,7 @@
SPACE + TRUE + SEMI_COLON + NEW_LINE +
TWELVE_SPACE_INDENTATION + SUBTREE_FILTERING_RESULT_BUILDER +
PERIOD + attributeName + OPEN_PARENTHESIS + APP_INSTANCE +
- PERIOD + attributeName + EMPTY_PARAMETER_FUNCTION_CALL +
+ PERIOD + attributeName + OPEN_CLOSE_BRACKET_STRING +
CLOSE_PARENTHESIS + SEMI_COLON + NEW_LINE +
EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
}
@@ -648,7 +648,7 @@
method += EIGHT_SPACE_INDENTATION + RETURN + SPACE +
SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + BUILD +
- EMPTY_PARAMETER_FUNCTION_CALL + SEMI_COLON + NEW_LINE +
+ OPEN_CLOSE_BRACKET_STRING + SEMI_COLON + NEW_LINE +
FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
return method;
@@ -686,7 +686,7 @@
method += SIXTEEN_SPACE_INDENTATION + type + SPACE + "result = " +
name + PERIOD + PROCESS_SUBTREE_FILTERING + OPEN_PARENTHESIS +
- APP_INSTANCE + PERIOD + name + EMPTY_PARAMETER_FUNCTION_CALL
+ APP_INSTANCE + PERIOD + name + OPEN_CLOSE_BRACKET_STRING
+ COMMA + SPACE + FALSE + CLOSE_PARENTHESIS + SEMI_COLON +
NEW_LINE;
@@ -737,7 +737,7 @@
type + SPACE + name,
APP_INSTANCE + PERIOD +
name +
- EMPTY_PARAMETER_FUNCTION_CALL);
+ OPEN_CLOSE_BRACKET_STRING);
method = method + SIXTEEN_SPACE_INDENTATION +
SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING +
@@ -749,7 +749,7 @@
//If need to explicitly participate in query
method += StringGenerator
.getElseIfConditionBegin(EIGHT_SPACE_INDENTATION,
- name + EMPTY_PARAMETER_FUNCTION_CALL +
+ name + OPEN_CLOSE_BRACKET_STRING +
SPACE + NOT + EQUAL +
SPACE + NULL);
@@ -762,7 +762,7 @@
//If there is any parameter in the query condition
method += StringGenerator
.getIfConditionBegin(TWELVE_SPACE_INDENTATION, NOT + name +
- EMPTY_PARAMETER_FUNCTION_CALL + PERIOD + IS_EMPTY);
+ OPEN_CLOSE_BRACKET_STRING + PERIOD + IS_EMPTY);
if (isLeafList) {
/*
@@ -771,12 +771,12 @@
method += StringGenerator
.getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
APP_INSTANCE + PERIOD + name +
- EMPTY_PARAMETER_FUNCTION_CALL +
+ OPEN_CLOSE_BRACKET_STRING +
SPACE + EQUAL + EQUAL + SPACE +
NULL + SPACE + OR_OPERATION
+ SPACE + APP_INSTANCE +
PERIOD + name +
- EMPTY_PARAMETER_FUNCTION_CALL +
+ OPEN_CLOSE_BRACKET_STRING +
PERIOD + IS_EMPTY);
method += TWENTY_SPACE_INDENTATION + RETURN + SPACE + FALSE +
@@ -787,7 +787,7 @@
// for instance iterator
method += StringGenerator.getCollectionIteratorForLoopBegin(
SIXTEEN_SPACE_INDENTATION, type + SPACE + name,
- name + EMPTY_PARAMETER_FUNCTION_CALL);
+ name + OPEN_CLOSE_BRACKET_STRING);
method += TWENTY_SPACE_INDENTATION + BOOLEAN_DATA_TYPE + SPACE +
"flag" + SPACE + EQUAL + SPACE + FALSE + SEMI_COLON +
@@ -800,7 +800,7 @@
"2",
APP_INSTANCE + PERIOD +
name +
- EMPTY_PARAMETER_FUNCTION_CALL);
+ OPEN_CLOSE_BRACKET_STRING);
//the content match leaf list attribute value matches
method += StringGenerator
@@ -842,12 +842,12 @@
method += StringGenerator
.getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
APP_INSTANCE + PERIOD + name +
- EMPTY_PARAMETER_FUNCTION_CALL +
+ OPEN_CLOSE_BRACKET_STRING +
SPACE + NOT + EQUAL + SPACE +
NULL + SPACE + AND_OPERATION +
SPACE + NOT + APP_INSTANCE +
PERIOD + name +
- EMPTY_PARAMETER_FUNCTION_CALL +
+ OPEN_CLOSE_BRACKET_STRING +
PERIOD + IS_EMPTY);
/*
@@ -857,13 +857,13 @@
.getCollectionIteratorForLoopBegin(TWENTY_SPACE_INDENTATION,
type + SPACE + name,
name +
- EMPTY_PARAMETER_FUNCTION_CALL);
+ OPEN_CLOSE_BRACKET_STRING);
//loop all the app instance(s)
method += StringGenerator.getCollectionIteratorForLoopBegin(
TWENTY_FOUR_SPACE_INDENTATION, type + SPACE + name + "2",
APP_INSTANCE + PERIOD + name +
- EMPTY_PARAMETER_FUNCTION_CALL);
+ OPEN_CLOSE_BRACKET_STRING);
method += TWENTY_EIGHT_SPACE_INDENTATION + type + SPACE +
"result = " + name + PERIOD +
@@ -903,12 +903,12 @@
method += StringGenerator
.getIfConditionBegin(SIXTEEN_SPACE_INDENTATION,
APP_INSTANCE + PERIOD + name
- + EMPTY_PARAMETER_FUNCTION_CALL +
+ + OPEN_CLOSE_BRACKET_STRING +
SPACE + NOT + EQUAL + SPACE +
NULL + SPACE + AND_OPERATION +
SPACE + NOT + APP_INSTANCE +
PERIOD + name +
- EMPTY_PARAMETER_FUNCTION_CALL +
+ OPEN_CLOSE_BRACKET_STRING +
PERIOD + IS_EMPTY);
method = method + StringGenerator
@@ -916,7 +916,7 @@
type + SPACE + name,
APP_INSTANCE + PERIOD +
name +
- EMPTY_PARAMETER_FUNCTION_CALL);
+ OPEN_CLOSE_BRACKET_STRING);
method = method + TWENTY_FOUR_SPACE_INDENTATION +
SUBTREE_FILTERING_RESULT_BUILDER + PERIOD + ADD_STRING
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java
index cc7781d..f854f99 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/TranslatorUtils.java
@@ -118,7 +118,7 @@
* @param curNode current YANG node
* @return type files
*/
- static TempJavaTypeFragmentFiles getTypeFiles(YangNode curNode) {
+ public static TempJavaTypeFragmentFiles getTypeFiles(YangNode curNode) {
return ((TempJavaCodeFragmentFilesContainer) curNode)
.getTempJavaCodeFragmentFiles().getTypeTempFiles();
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index d8d75f4..6bfd9a8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -167,6 +167,11 @@
public static final String JAVA_DOC_BUILD = " * Builds object of ";
/**
+ * JavaDocs's return statement for build method.
+ */
+ public static final String JAVA_DOC_BUILD_RETURN = "object of ";
+
+ /**
* JavaDocs's statement for builder object.
*/
public static final String BUILDER_OBJECT = "builder object of ";
@@ -323,6 +328,11 @@
public static final String SCHEMA_NAME = "schemaName";
/**
+ * Static attribute for schema name value.
+ */
+ public static final String STR_VAL = "stringValue";
+
+ /**
* Static attribute for validateRange.
*/
public static final String VALIDATE_RANGE = "validateRange";
@@ -484,6 +494,11 @@
public static final String SUBJECT = "Subject";
/**
+ * Static attribute for ListenerRegistry.
+ */
+ public static final String LISTENER_REG = "ListenerRegistry";
+
+ /**
* Static attribute for ListenerService.
*/
public static final String LISTENER_SERVICE = "ListenerService";
@@ -694,6 +709,15 @@
public static final String SUFFIX_S = "s";
/**
+ * Static attribute for string builder var.
+ */
+ public static final String STRING_BUILDER_VAR = "sBuild";
+ /**
+ * Static attribute for string builder var.
+ */
+ public static final String APPEND = "append";
+
+ /**
* Static attribute for if.
*/
public static final String IF = "if";
@@ -821,7 +845,7 @@
/**
* Static attribute for empty parameter function call.
*/
- public static final String EMPTY_PARAMETER_FUNCTION_CALL = "()";
+ public static final String OPEN_CLOSE_BRACKET_STRING = "()";
/**
* Static attribute for open curly bracket syntax.
@@ -1062,6 +1086,10 @@
public static final String STRING_DATA_TYPE = "String";
/**
+ * String built in java type.
+ */
+ public static final String STRING_BUILDER = "StringBuilder";
+ /**
* Java.lang.* packages.
*/
public static final String JAVA_LANG = "java.lang";
@@ -1254,6 +1282,11 @@
public static final String BUILDER_LOWER_CASE = "builder";
/**
+ * Static attribute for manager syntax.
+ */
+ public static final String MANAGER = "Manager";
+
+ /**
* Static attribute for service syntax.
*/
public static final String SERVICE = "Service";
@@ -1309,6 +1342,11 @@
public static final String NEW = "new";
/**
+ * Static attribute for java new syntax.
+ */
+ public static final String TO_STRING_METHOD = "toString";
+
+ /**
* Static attribute for this syntax.
*/
public static final String THIS = "this";
@@ -1402,6 +1440,12 @@
"MoreObjects";
/**
+ * Static attribute for more object import class.
+ */
+ public static final String MORE_OBJ_ATTR =
+ "MoreObjects.ToStringHelper helper = ";
+
+ /**
* Static attribute for to string method.
*/
public static final String GOOGLE_MORE_OBJECT_METHOD_STRING =
@@ -1410,7 +1454,22 @@
/**
* Static attribute for java utilities import package.
*/
- public static final String JAVA_UTIL_OBJECTS_IMPORT_PKG = "java.util";
+ public static final String JAVA_UTIL_PKG = "java.util";
+
+ /**
+ * Static attribute for java utilities import package.
+ */
+ public static final String JAVA_UTIL_REGEX_PKG = "java.util.regex";
+
+ /**
+ * Static attribute for java utilities import package.
+ */
+ public static final String SET_VALUE_PARA = "setValue";
+
+ /**
+ * Static attribute for java utilities import package.
+ */
+ public static final String HELPER = "helper";
/**
* Static attribute for bitset.
@@ -1454,7 +1513,7 @@
public static final String SET = "Set";
/**
- * Comment to be added for auto generated impl methods.
+ * Comment to be added for autogenerated impl methods.
*/
public static final String YANG_UTILS_TODO =
"//TODO: YANG utils generated code";
@@ -1742,6 +1801,11 @@
public static final String BITS = "bits";
/**
+ * Static attribute for bits.
+ */
+ public static final String BITS_CAPS = "Bits";
+
+ /**
* Static attribute for YANG.
*/
public static final String YANG = "yang";
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index d9933a9..7698d89 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -51,6 +51,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS;
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_DOC_SETTERS_COMMON;
import static org.onosproject.yangutils.utils.UtilConstants.LIST;
+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_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE_ASTERISK;
@@ -74,7 +75,6 @@
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.io.impl.YangIoUtils.getSmallCase;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
/**
* Represents javadoc for the generated classes.
@@ -587,8 +587,8 @@
public static String generateForValidatorMethod() {
return getJavaDocStartLine(VALIDATE_RANGE, JAVA_DOC_FOR_VALIDATOR) +
getJavaDocEmptyAsteriskLine() +
- trimAtLast(getJavaDocParamLine(MIN_RANGE, MIN_RANGE), NEW_LINE) +
getJavaDocParamLine(MIN_RANGE, MIN_RANGE) +
+ getJavaDocParamLine(MAX_RANGE, MIN_RANGE) +
getJavaDocReturnLine(JAVA_DOC_FOR_VALIDATOR_RETURN) +
getJavaDocEndLine();
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
index b5f5fca..9c994a8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangFileScanner.java
@@ -45,7 +45,7 @@
* @throws IOException when files get deleted while performing the
* operations
*/
- static List<String> getJavaFiles(String root) throws IOException {
+ public static List<String> getJavaFiles(String root) throws IOException {
return getFiles(root, JAVA_FILE_EXTENSION);
}
diff --git a/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java b/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
index 1e164f3..6b20103 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGeneratorTest.java
@@ -20,16 +20,19 @@
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.List;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertThat;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
+import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuild;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildForInterface;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructor;
@@ -43,6 +46,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForTypeDefClass;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringMethod;
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc;
+import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getUnionToStringMethod;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getCheckNotNull;
import static org.onosproject.yangutils.translator.tojava.utils.StringGenerator.getOverRideString;
import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
@@ -92,6 +96,17 @@
private static final String CLASS_NAME = "Testname";
private static final String ATTRIBUTE_NAME = "testname";
+ private static final String SET = "setValue.set(0);\n";
+ private static final String UNION = " @Override\n" +
+ " public String toString() {\n" +
+ " MoreObjects.ToStringHelper helper =" +
+ " MoreObjects.toStringHelper(getClass())\n" +
+ " .omitNullValues();\n" +
+ " if (setValue.get(0)) {\n" +
+ " helper.add(\"string\", string);\n" +
+ " }\n" +
+ " return helper.toString();\n" +
+ " }";
/**
* Unit test for private constructor.
@@ -122,15 +137,27 @@
@Test
public void getTypeConstructorTest() {
- YangPluginConfig pluginConfig = new YangPluginConfig();
JavaAttributeInfo testAttr = getTestAttribute();
- String test = getTypeConstructorStringAndJavaDoc(testAttr, CLASS_NAME
- );
+ String test = getTypeConstructorStringAndJavaDoc(
+ testAttr, CLASS_NAME, GENERATE_TYPEDEF_CLASS, 0);
assertThat(true, is(test.contains(PUBLIC + SPACE + CLASS_NAME +
OPEN_PARENTHESIS)));
}
/**
+ * Unit test case for checking the parse builder and type constructor.
+ */
+ @Test
+ public void getTypeConstructorForUnionTest() {
+ JavaAttributeInfo testAttr = getTestAttribute();
+ String test = getTypeConstructorStringAndJavaDoc(
+ testAttr, CLASS_NAME, GENERATE_UNION_CLASS, 0);
+ assertThat(true, is(test.contains(PUBLIC + SPACE + CLASS_NAME +
+ OPEN_PARENTHESIS)));
+ assertThat(true, is(test.contains(SET)));
+ }
+
+ /**
* Test for build method for class.
*/
@Test
@@ -176,7 +203,6 @@
@Test
public void getConstructorTest() {
JavaAttributeInfo testAttr = getTestAttribute();
- YangPluginConfig pluginConfig = new YangPluginConfig();
String method = getConstructor(testAttr, GENERATE_SERVICE_AND_MANAGER
);
assertThat(true, is(method.contains(
@@ -191,7 +217,6 @@
*/
@Test
public void getConstructorStartTest() {
- YangPluginConfig pluginConfig = new YangPluginConfig();
String method = getConstructorStart(CLASS_NAME, false);
assertThat(true, is(method.contains(
PROTECTED + SPACE + DEFAULT_CAPS + CLASS_NAME +
@@ -227,6 +252,18 @@
}
/**
+ * Test for to string method.
+ */
+ @Test
+ public void getToStringMethodForUnionTest() {
+ JavaAttributeInfo testAttr = getTestAttribute();
+ List<YangType<?>> types = new ArrayList<>();
+ types.add(testAttr.getAttributeType());
+ String method = getUnionToStringMethod(types);
+ assertThat(true, is(method.contains(UNION)));
+ }
+
+ /**
* Test for getter method of class.
*/
@Test