From 21600d42239d0733a7b8d9de9ee442de108c8149 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 5 Jul 2017 11:55:38 +0200 Subject: [PATCH] Optimize JavaIdentifierNormalizer.fixCases() Rather than doing expensive String.split(), optimize the method for non-underscore case and take advantage of Splitter. Also peel the first iteration out of the loop. Change-Id: I452737f1d3b65600aa73b19cf17ea837b12f843c Signed-off-by: Robert Varga --- .../util/JavaIdentifierNormalizer.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 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 8202f192a1..703568837c 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 @@ -217,6 +217,7 @@ public final class JavaIdentifierNormalizer { private static final CharMatcher DASH_MATCHER = CharMatcher.is(DASH); private static final CharMatcher DASH_OR_SPACE_MATCHER = CharMatcher.anyOf(" -"); private static final Splitter DOT_SPLITTER = Splitter.on('.'); + private static final Splitter UNDERSCORE_SPLITTER = Splitter.on(UNDERSCORE); // Converted to lower case private static final Set WINDOWS_RESERVED_WORDS = BindingMapping.WINDOWS_RESERVED_WORDS.stream() @@ -486,19 +487,15 @@ public final class JavaIdentifierNormalizer { * @return resolved identifier */ private static String fixCases(final String convertedIdentifier) { - final StringBuilder sb = new StringBuilder(); - if (convertedIdentifier.contains(String.valueOf(UNDERSCORE))) { - boolean isFirst = true; - for (final String part : convertedIdentifier.split(String.valueOf(UNDERSCORE))) { - if (isFirst) { - isFirst = false; - sb.append(part); - } else { - sb.append(capitalize(part)); - } - } - } else { - sb.append(convertedIdentifier); + if (convertedIdentifier.indexOf(UNDERSCORE) == -1) { + return convertedIdentifier; + } + + final StringBuilder sb = new StringBuilder(convertedIdentifier.length()); + final Iterator it = UNDERSCORE_SPLITTER.split(convertedIdentifier).iterator(); + sb.append(it.next()); + while (it.hasNext()) { + sb.append(capitalize(it.next())); } return sb.toString(); } -- 2.36.6