From: Robert Varga Date: Wed, 5 Jul 2017 08:35:26 +0000 (+0200) Subject: Optimize JavaIdentifierNormalizer.normalizeFullPackageName() X-Git-Tag: release/nitrogen~74 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=106dc46a7d431c140869cb346b38c4f5142016b5;p=mdsal.git Optimize JavaIdentifierNormalizer.normalizeFullPackageName() Use a Splitter instead of String.split(), pre-allocate StringBuilder with an estimated size and remove duplicate at-end checks. Change-Id: I0f0a51533ae26aec58cf514499ffd4e0a9f3d584 Signed-off-by: Robert Varga --- 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 c8b1418394..03bac43cc3 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 @@ -8,9 +8,11 @@ package org.opendaylight.mdsal.binding.javav2.generator.util; import com.google.common.annotations.Beta; +import com.google.common.base.Splitter; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ListMultimap; +import java.util.Iterator; import java.util.List; import java.util.Set; import org.opendaylight.mdsal.binding.javav2.model.api.Enumeration; @@ -211,6 +213,8 @@ public final class JavaIdentifierNormalizer { private static final ListMultimap PACKAGES_MAP = ArrayListMultimap.create(); private static final Set PRIMITIVE_TYPES = ImmutableSet.of("char[]", "byte[]"); + private static final Splitter DOT_SPLITTER = Splitter.on('.'); + private JavaIdentifierNormalizer() { throw new UnsupportedOperationException("Util class"); } @@ -253,17 +257,19 @@ public final class JavaIdentifierNormalizer { * @return normalized name */ public static String normalizeFullPackageName(final String fullPackageName) { - final String[] packageNameParts = fullPackageName.split("\\."); - final StringBuilder sb = new StringBuilder(); - for (int i = 0; i < packageNameParts.length; i++) { - String normalizedPartialPackageName = normalizePartialPackageName(packageNameParts[i]); - sb.append(normalizedPartialPackageName); + final Iterator it = DOT_SPLITTER.split(fullPackageName).iterator(); + if (!it.hasNext()) { + return fullPackageName; + } - if (i != packageNameParts.length - 1) { - sb.append("."); + final StringBuilder sb = new StringBuilder(fullPackageName.length()); + while (true) { + sb.append(normalizePartialPackageName(it.next())); + if (!it.hasNext()) { + return sb.toString(); } + sb.append('.'); } - return sb.toString(); } /**