Optimize JavaIdentifierNormalizer.normalizeFullPackageName() 42/60442/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 5 Jul 2017 08:35:26 +0000 (10:35 +0200)
committerMartin Ciglan <martin.ciglan@pantheon.tech>
Mon, 17 Jul 2017 06:51:08 +0000 (06:51 +0000)
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 <robert.varga@pantheon.tech>
(cherry picked from commit 106dc46a7d431c140869cb346b38c4f5142016b5)

binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/JavaIdentifierNormalizer.java

index c8b1418394c4c89f2eb12617fcee79e8268835aa..03bac43cc3c04fe38ec6a9ede9001fe8acb60ef0 100644 (file)
@@ -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<String, String> PACKAGES_MAP = ArrayListMultimap.create();
     private static final Set<String> 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<String> 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();
     }
 
     /**