Use CharMatcher in packageNameForGeneratedType() 44/8644/2
authorRobert Varga <rovarga@cisco.com>
Thu, 3 Jul 2014 21:43:03 +0000 (23:43 +0200)
committerRobert Varga <rovarga@cisco.com>
Fri, 4 Jul 2014 07:17:03 +0000 (09:17 +0200)
Instead of performing up to two string copies, use a single replacement
pass, taking into account two characters using a CharMatcher.

Change-Id: I305d384eff2da5d0bfb3b1b820270f4480a800a4
Signed-off-by: Robert Varga <rovarga@cisco.com>
code-generator/binding-generator-util/src/main/java/org/opendaylight/yangtools/binding/generator/util/BindingGeneratorUtil.java

index eb052e122ac29ca2e6f39764a7b31ea3fee072d6..f6403aef202741a96a06b6fff1b8114b09aa2712 100644 (file)
@@ -81,8 +81,9 @@ public final class BindingGeneratorUtil {
      */
     private static final Pattern COLON_SLASH_SLASH = Pattern.compile("://", Pattern.LITERAL);
     private static final String QUOTED_DOT = Matcher.quoteReplacement(".");
-    private static final Splitter DOT = Splitter.on('.');
+    private static final Splitter DOT_SPLITTER = Splitter.on('.');
     private static final CharMatcher DOT_MATCHER = CharMatcher.is('.');
+    private static final CharMatcher DASH_COLON_MATCHER = CharMatcher.anyOf("-:");
 
     /**
      * Converts string <code>packageName</code> to valid JAVA package name.
@@ -102,7 +103,7 @@ public final class BindingGeneratorUtil {
         final StringBuilder builder = new StringBuilder();
         boolean first = true;
 
-        for (String p : DOT.split(packageName.toLowerCase())) {
+        for (String p : DOT_SPLITTER.split(packageName.toLowerCase())) {
             if (first) {
                 first = false;
             } else {
@@ -235,9 +236,7 @@ public final class BindingGeneratorUtil {
             builder.append('.');
             String nodeLocalName = iterator.next().getLocalName();
 
-            nodeLocalName = nodeLocalName.replace(':', '.');
-            nodeLocalName = nodeLocalName.replace('-', '.');
-            builder.append(nodeLocalName);
+            builder.append(DASH_COLON_MATCHER.replaceFrom(nodeLocalName, '.'));
         }
         return validateJavaPackage(builder.toString());
     }
@@ -326,7 +325,7 @@ public final class BindingGeneratorUtil {
 
         String correctStr = DOT_MATCHER.removeFrom(token.trim());
         if (correctStr.isEmpty()) {
-            throw new IllegalArgumentException("Name can not be emty");
+            throw new IllegalArgumentException("Name can not be empty");
         }
 
         correctStr = replaceWithCamelCase(correctStr, ' ');