[ONOS-4547, ONOS-4566, ONOS-4575, ONOS-4582, ONOS-4581, ONOS-4600,
ONOS-4598, ONOS-4607, ONOS-4610, ONOS-4611] Prefix addition from config
and defect fixes.
Change-Id: Ieaab5d3e0fe9a1bfa24a2527eeec5435cf0a1b85
diff --git a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index 10ec3c2..a4e9cfa 100644
--- a/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -75,16 +75,18 @@
* @param version YANG version
* @param nameSpace name space of the module
* @param revision revision of the module defined
- * @return returns the root package string
+ * @param conflictResolver object of YANG to java naming conflict util
+ * @return the root package string
*/
- public static String getRootPackage(byte version, String nameSpace, String revision) {
+ public static String getRootPackage(byte version, String nameSpace, String revision,
+ YangToJavaNamingConflictUtil conflictResolver) {
String pkg;
pkg = DEFAULT_BASE_PKG;
pkg = pkg + PERIOD;
pkg = pkg + getYangVersion(version);
pkg = pkg + PERIOD;
- pkg = pkg + getPkgFromNameSpace(nameSpace);
+ pkg = pkg + getPkgFromNameSpace(nameSpace, conflictResolver);
pkg = pkg + PERIOD;
pkg = pkg + getYangRevisionStr(revision);
@@ -144,9 +146,10 @@
* Returns package name from name space.
*
* @param nameSpace name space of YANG module
+ * @param conflictResolver object of YANG to java naming conflict util
* @return java package name as per java rules
*/
- private static String getPkgFromNameSpace(String nameSpace) {
+ private static String getPkgFromNameSpace(String nameSpace, YangToJavaNamingConflictUtil conflictResolver) {
ArrayList<String> pkgArr = new ArrayList<String>();
nameSpace = nameSpace.replace(QUOTES, EMPTY_STRING);
@@ -156,7 +159,7 @@
for (String nameSpaceString : nameSpaceArr) {
pkgArr.add(nameSpaceString);
}
- return getPkgFrmArr(pkgArr);
+ return getPkgFrmArr(pkgArr, conflictResolver);
}
/**
@@ -194,17 +197,19 @@
* Returns the package string.
*
* @param pkgArr package array
+ * @param conflictResolver object of YANG to java naming conflict util
* @return package string
*/
- private static String getPkgFrmArr(ArrayList<String> pkgArr) {
+ private static String getPkgFrmArr(ArrayList<String> pkgArr, YangToJavaNamingConflictUtil conflictResolver) {
String pkg = EMPTY_STRING;
int size = pkgArr.size();
int i = 0;
for (String member : pkgArr) {
- boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member);
+ boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member.toLowerCase());
if (presenceOfKeyword || member.matches(REGEX_FOR_FIRST_DIGIT)) {
- member = YANG_AUTO_PREFIX + member;
+ String prefix = getPrefixForIdentifier(conflictResolver);
+ member = prefix + member;
}
pkg = pkg + member;
if (i != size - 1) {
@@ -216,20 +221,40 @@
}
/**
- * Returns package sub name from YANG identifier name.
+ * Prefix for adding with identifier and namespace, when it is a java keyword or starting with digits.
*
- * @param name YANG identifier name
- * @return java package sub name as per java rules
+ * @param conflictResolver object of YANG to java naming conflict util
+ * @return prefix which needs to be added
*/
- public static String getSubPkgFromName(String name) {
+ public static String getPrefixForIdentifier(YangToJavaNamingConflictUtil conflictResolver) {
- ArrayList<String> pkgArr = new ArrayList<String>();
- String[] nameArr = name.split(COLAN);
-
- for (String nameString : nameArr) {
- pkgArr.add(nameString);
+ String prefixForIdentifier = null;
+ if (conflictResolver != null) {
+ prefixForIdentifier = conflictResolver.getPrefixForIdentifier();
}
- return getPkgFrmArr(pkgArr);
+ if (prefixForIdentifier != null) {
+ prefixForIdentifier = prefixForIdentifier.replaceAll(REGEX_WITH_ALL_SPECIAL_CHAR, COLAN);
+ String[] strArray = prefixForIdentifier.split(COLAN);
+ try {
+ if (strArray[0].isEmpty()) {
+ List<String> stringArrangement = new ArrayList<String>();
+ for (int i = 1; i < strArray.length; i++) {
+ stringArrangement.add(strArray[i]);
+ }
+ strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
+ }
+ prefixForIdentifier = strArray[0];
+ for (int j = 1; j < strArray.length; j++) {
+ prefixForIdentifier = prefixForIdentifier + strArray[j].substring(0, 1).toUpperCase() +
+ strArray[j].substring(1);
+ }
+ } catch (ArrayIndexOutOfBoundsException outOfBoundsException) {
+ throw new TranslatorException("The given prefix in pom.xml is invalid.");
+ }
+ } else {
+ prefixForIdentifier = YANG_AUTO_PREFIX;
+ }
+ return prefixForIdentifier;
}
/**
@@ -267,16 +292,18 @@
}
strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
}
- return upperCaseConflictResolver(strArray);
+ return upperCaseConflictResolver(strArray, conflictResolver);
}
/**
- * Resolves the conflict when input has uppercase.
+ * Resolves the conflict when input has upper case.
*
- * @param stringArray containing strings for uppercase conflict resolver
+ * @param stringArray containing strings for upper case conflict resolver
+ * @param conflictResolver object of YANG to java naming conflict util
* @return camel cased string
*/
- private static String upperCaseConflictResolver(String[] stringArray) {
+ private static String upperCaseConflictResolver(String[] stringArray,
+ YangToJavaNamingConflictUtil conflictResolver) {
for (int l = 0; l < stringArray.length; l++) {
String[] upperCaseSplitArray = stringArray[l].split(REGEX_WITH_UPPERCASE);
@@ -317,7 +344,7 @@
}
}
stringArray = result.toArray(new String[result.size()]);
- return applyCamelCaseRule(stringArray);
+ return applyCamelCaseRule(stringArray, conflictResolver);
}
/**
@@ -325,9 +352,10 @@
* the letter next to a number in an array.
*
* @param stringArray containing strings for camel case separation
+ * @param conflictResolver object of YANG to java naming conflict util
* @return camel case rule checked string
*/
- private static String applyCamelCaseRule(String[] stringArray) {
+ private static String applyCamelCaseRule(String[] stringArray, YangToJavaNamingConflictUtil conflictResolver) {
String ruleChecker = stringArray[0].toLowerCase();
int i;
@@ -359,23 +387,25 @@
ruleChecker = ruleChecker + stringArray[i].substring(0, 1).toUpperCase() + stringArray[i].substring(1);
}
}
- String ruleCheckerWithPrefix = addPrefix(ruleChecker);
+ String ruleCheckerWithPrefix = addPrefix(ruleChecker, conflictResolver);
return restrictConsecutiveCapitalCase(ruleCheckerWithPrefix);
}
/**
- * Adds prefix YANG auto prefix if the string begins with digit or is a java key word.
+ * Adds prefix, if the string begins with digit or is a java key word.
*
* @param camelCasePrefix string for adding prefix
+ * @param conflictResolver object of YANG to java naming conflict util
* @return prefixed camel case string
*/
- private static String addPrefix(String camelCasePrefix) {
+ private static String addPrefix(String camelCasePrefix, YangToJavaNamingConflictUtil conflictResolver) {
+ String prefix = getPrefixForIdentifier(conflictResolver);
if (camelCasePrefix.matches(REGEX_FOR_FIRST_DIGIT)) {
- camelCasePrefix = YANG_AUTO_PREFIX + camelCasePrefix;
+ camelCasePrefix = prefix + camelCasePrefix;
}
- if (JAVA_KEY_WORDS.contains(camelCasePrefix.toLowerCase())) {
- camelCasePrefix = YANG_AUTO_PREFIX + camelCasePrefix.substring(0, 1).toUpperCase()
+ if (JAVA_KEY_WORDS.contains(camelCasePrefix)) {
+ camelCasePrefix = prefix + camelCasePrefix.substring(0, 1).toUpperCase()
+ camelCasePrefix.substring(1);
}
return camelCasePrefix;
@@ -444,13 +474,21 @@
*/
public static String getEnumJavaAttribute(String name) {
- String[] strArray = name.split(HYPHEN);
+ name = name.replaceAll(REGEX_WITH_ALL_SPECIAL_CHAR, COLAN);
+ String[] strArray = name.split(COLAN);
String output = EMPTY_STRING;
+ if (strArray[0].isEmpty()) {
+ List<String> stringArrangement = new ArrayList<String>();
+ for (int i = 1; i < strArray.length; i++) {
+ stringArrangement.add(strArray[i]);
+ }
+ strArray = stringArrangement.toArray(new String[stringArrangement.size()]);
+ }
for (int i = 0; i < strArray.length; i++) {
- output = output + strArray[i];
- if (i > 0 && i < strArray.length - 1) {
+ if (i > 0 && i < strArray.length) {
output = output + UNDER_SCORE;
}
+ output = output + strArray[i];
}
return output;
}