From b3527d64c63d13a5ab02bdcee38bbcb3a14d975a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 5 Jul 2017 11:44:41 +0200 Subject: [PATCH] Optimize JavaIdentifierNormalizer reserved words lookup Rather than having to go to upper case for each identifier being looked up, cache a lower-case version of BindingMapping.WINDOWS_RESERVED_WORDS. Change-Id: I1fe5f89cfd2b443b059bde3c5250c916b33b0978 Signed-off-by: Robert Varga --- .../util/JavaIdentifierNormalizer.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizer.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizer.java index 3c478051fd..8202f192a1 100644 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizer.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizer.java @@ -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 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 -- 2.36.6