[ONOS-4073] YANG enum translator implementation.
Change-Id: I129eaec0c8f81c674a994a579650f18499340052
diff --git a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
index 64fdf04..e28fa4e 100644
--- a/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
+++ b/utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/utils/AttributesJavaDataType.java
@@ -18,6 +18,7 @@
import org.onosproject.yangutils.datamodel.YangDataTypes;
import org.onosproject.yangutils.datamodel.YangDerivedInfo;
+import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.datamodel.YangTypeDef;
@@ -25,6 +26,7 @@
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.HasJavaFileInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
+import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumeration;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeDef;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaUnion;
@@ -186,7 +188,8 @@
case BOOLEAN:
return BOOLEAN_WRAPPER;
case ENUMERATION:
- //TODO: ENUMERATION.
+ return getCaptialCase(
+ getCamelCase(((YangJavaEnumeration) yangType.getDataTypeExtendedInfo()).getName(), null));
case BITS:
//TODO:BITS
case BINARY:
@@ -205,7 +208,7 @@
case DERIVED:
return getCaptialCase(getCamelCase(yangType.getDataTypeName(), null));
default:
- return null;
+ throw new TranslatorException("given data type is not supported.");
}
} else {
switch (type) {
@@ -216,7 +219,8 @@
case STRING:
return STRING_DATA_TYPE;
case ENUMERATION:
- //TODO: ENUMERATION.
+ return getCaptialCase(
+ getCamelCase(((YangJavaEnumeration) yangType.getDataTypeExtendedInfo()).getName(), null));
case BITS:
//TODO:BITS
case BINARY:
@@ -269,7 +273,7 @@
case DECIMAL64:
//TODO: DECIMAL64.
case ENUMERATION:
- //TODO: ENUMERATION.
+ return getEnumsPackage(yangType);
case BITS:
//TODO:BITS
case BINARY:
@@ -287,7 +291,7 @@
case DERIVED:
return getTypDefsPackage(yangType);
default:
- return null;
+ throw new TranslatorException("given data type is not supported.");
}
} else {
switch (type) {
@@ -298,7 +302,7 @@
case STRING:
return JAVA_LANG;
case ENUMERATION:
- //TODO: ENUMERATION.
+ return getEnumsPackage(yangType);
case BITS:
//TODO:BITS
case BINARY:
@@ -364,6 +368,24 @@
}
/**
+ * Returns YANG enumeration's java package.
+ *
+ * @param type YANG type
+ * @return YANG enumeration's java package
+ */
+ private static String getEnumsPackage(YangType<?> type) {
+
+ if (!(type.getDataTypeExtendedInfo() instanceof YangEnumeration)) {
+ throw new TranslatorException("type should have been enumeration.");
+ }
+ YangJavaEnumeration enumeration = (YangJavaEnumeration) type.getDataTypeExtendedInfo();
+ if (enumeration.getJavaFileInfo().getPackage() == null) {
+ return getPackageFromParent(enumeration.getParent());
+ }
+ return enumeration.getJavaFileInfo().getPackage();
+ }
+
+ /**
* Returns package from parent node.
*
* @param parent parent YANG node