Optimize JavaIdentifierNormalizer reserved words lookup
[mdsal.git] / binding2 / mdsal-binding2-generator-util / src / main / java / org / opendaylight / mdsal / binding / javav2 / generator / util / JavaIdentifierNormalizer.java
index 3c478051fda276a13478b5029c29ea4c1de78a3a..8202f192a1650ad7b571772898b7734994d8810b 100644 (file)
@@ -218,6 +218,10 @@ public final class JavaIdentifierNormalizer {
     private static final CharMatcher DASH_OR_SPACE_MATCHER = CharMatcher.anyOf(" -");
     private static final Splitter DOT_SPLITTER = Splitter.on('.');
 
+    // Converted to lower case
+    private static final Set<String> WINDOWS_RESERVED_WORDS = BindingMapping.WINDOWS_RESERVED_WORDS.stream()
+            .map(String::toLowerCase).collect(ImmutableSet.toImmutableSet());
+
     private JavaIdentifierNormalizer() {
         throw new UnsupportedOperationException("Util class");
     }
@@ -286,8 +290,7 @@ public final class JavaIdentifierNormalizer {
         // if part of package name consist from java or windows reserved word, return it with
         // underscore at the end and in lower case
         final String lowerPart = packageNamePart.toLowerCase();
-        if (BindingMapping.JAVA_RESERVED_WORDS.contains(lowerPart)
-                || BindingMapping.WINDOWS_RESERVED_WORDS.contains(packageNamePart.toUpperCase())) {
+        if (BindingMapping.JAVA_RESERVED_WORDS.contains(lowerPart) || WINDOWS_RESERVED_WORDS.contains(lowerPart)) {
             return lowerPart + UNDERSCORE;
         }
 
@@ -376,19 +379,16 @@ public final class JavaIdentifierNormalizer {
      * @return - java acceptable identifier
      */
     public static String normalizeSpecificIdentifier(final String identifier, final JavaIdentifier javaIdentifier) {
-        final StringBuilder sb = new StringBuilder();
-
         // if identifier isn't PACKAGE type then check it by reserved keywords
-        if(javaIdentifier != JavaIdentifier.PACKAGE) {
-            if (BindingMapping.JAVA_RESERVED_WORDS.contains(identifier.toLowerCase())
-                    || BindingMapping.WINDOWS_RESERVED_WORDS.contains(identifier.toUpperCase())) {
-                return fixCasesByJavaType(
-                        sb.append(identifier).append(UNDERSCORE).append(RESERVED_KEYWORD).toString().toLowerCase(),
-                        javaIdentifier);
+        if (javaIdentifier != JavaIdentifier.PACKAGE) {
+            final String lower = identifier.toLowerCase();
+            if (BindingMapping.JAVA_RESERVED_WORDS.contains(lower) || WINDOWS_RESERVED_WORDS.contains(lower)) {
+                return fixCasesByJavaType(lower + UNDERSCORE + RESERVED_KEYWORD, javaIdentifier);
             }
         }
 
         // check and convert first char in identifier if there is non-java char
+        final StringBuilder sb = new StringBuilder();
         final char firstChar = identifier.charAt(FIRST_CHAR);
         if (!Character.isJavaIdentifierStart(firstChar)) {
             // converting first char of identifier