BUG-1304: rework BindingGeneratorImpl from xtend to java
[yangtools.git] / yang / yang-binding / src / main / java / org / opendaylight / yangtools / yang / binding / BindingMapping.java
index f7c6f728ddf304a28e6b29e7e8b18a3fe35ac215..f9bac0260bde451321f6d9a708fd84207e08ea09 100644 (file)
@@ -9,12 +9,11 @@ package org.opendaylight.yangtools.yang.binding;
 
 import static com.google.common.base.Preconditions.checkArgument;
 
-import java.util.Set;
-
-import org.opendaylight.yangtools.yang.common.QName;
-
+import com.google.common.base.CharMatcher;
 import com.google.common.base.Splitter;
 import com.google.common.collect.ImmutableSet;
+import java.util.Set;
+import org.opendaylight.yangtools.yang.common.QName;
 
 public final class BindingMapping {
 
@@ -33,7 +32,8 @@ public final class BindingMapping {
     public static final String QNAME_STATIC_FIELD_NAME = "QNAME";
     public static final String PACKAGE_PREFIX = "org.opendaylight.yang.gen.v1";
 
-    private static final Splitter SPACE_SPLITTER = Splitter.on(" ").omitEmptyStrings().trimResults();
+    private static final Splitter CAMEL_SPLITTER = Splitter.on(CharMatcher.anyOf(" _.-").precomputed())
+            .omitEmptyStrings().trimResults();
 
     public static final String MODULE_INFO_CLASS_NAME = "$YangModuleInfoImpl";
     public static final String MODEL_BINDING_PROVIDER_CLASS_NAME = "$YangModelBindingProvider";
@@ -41,6 +41,10 @@ public final class BindingMapping {
     public static final String RPC_INPUT_SUFFIX = "Input";
     public static final String RPC_OUTPUT_SUFFIX = "Output";
 
+    private BindingMapping() {
+        throw new UnsupportedOperationException("Utility class should not be instantiated");
+    }
+
     public static final String getMethodName(final QName name) {
         checkArgument(name != null, "Name should not be null.");
         return getMethodName(name.getLocalName());
@@ -71,8 +75,7 @@ public final class BindingMapping {
 
     private static final String toCamelCase(final String rawString) {
         checkArgument(rawString != null, "String should not be null");
-        Iterable<String> components = SPACE_SPLITTER.split(rawString.replace('-', ' ').replace('_', ' ')
-                .replace('.', ' '));
+        Iterable<String> components = CAMEL_SPLITTER.split(rawString);
         StringBuilder builder = new StringBuilder();
         for (String comp : components) {
             builder.append(toFirstUpper(comp));
@@ -104,13 +107,16 @@ public final class BindingMapping {
      *         or <code>null</code> if the input {@link String} {@code s} was
      *         <code>null</code>.
      */
-    private static String toFirstUpper(final String s) {
-        if (s == null || s.length() == 0)
+    public static String toFirstUpper(final String s) {
+        if (s == null || s.length() == 0) {
             return s;
-        if (Character.isUpperCase(s.charAt(0)))
+        }
+        if (Character.isUpperCase(s.charAt(0))) {
             return s;
-        if (s.length() == 1)
+        }
+        if (s.length() == 1) {
             return s.toUpperCase();
+        }
         return s.substring(0, 1).toUpperCase() + s.substring(1);
     }
 
@@ -127,12 +133,15 @@ public final class BindingMapping {
      *         <code>null</code>.
      */
     private static String toFirstLower(final String s) {
-        if (s == null || s.length() == 0)
+        if (s == null || s.length() == 0) {
             return s;
-        if (Character.isLowerCase(s.charAt(0)))
+        }
+        if (Character.isLowerCase(s.charAt(0))) {
             return s;
-        if (s.length() == 1)
+        }
+        if (s.length() == 1) {
             return s.toLowerCase();
+        }
         return s.substring(0, 1).toLowerCase() + s.substring(1);
     }
 }