Bug 2583 - illegal escape character if generated files
[yangtools.git] / code-generator / binding-generator-impl / src / main / java / org / opendaylight / yangtools / sal / binding / generator / impl / BindingGeneratorImpl.java
index c8db5f1ebc2b76a627df951d8b986b466f8b255c..339f6dfe0125eb6ceb92ec0d85bd41f42a8292ce 100644 (file)
@@ -25,10 +25,12 @@ import static org.opendaylight.yangtools.binding.generator.util.Types.typeForCla
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNode;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findNodeInSchemaContext;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule;
+import java.util.regex.Pattern;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
+import com.google.common.annotations.VisibleForTesting;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -122,6 +124,8 @@ public class BindingGeneratorImpl implements BindingGenerator {
      */
     private static final String YANG_EXT_NAMESPACE = "urn:opendaylight:yang:extension:yang-ext";
 
+    private static final Pattern UNICODE_CHAR_PATTERN = Pattern.compile("\\\\+u");
+
     private final Map<Module, ModuleContext> genCtx = new HashMap<>();
 
     /**
@@ -2052,7 +2056,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
             sb.append(NEW_LINE);
         }
 
-        return sb.toString();
+        return replaceAllIllegalChars(sb);
     }
 
     private String createDescription(final SchemaNode schemaNode, final String fullyQualifiedName) {
@@ -2115,7 +2119,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
             }
         }
 
-        return sb.toString();
+        return replaceAllIllegalChars(sb);
     }
 
     private boolean hasBuilderClass(final SchemaNode schemaNode) {
@@ -2155,7 +2159,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
             sb.append("</pre>");
         }
 
-        return sb.toString();
+        return replaceAllIllegalChars(sb);
     }
 
     private GeneratedTypeBuilder findChildNodeByPath(final SchemaPath path) {
@@ -2192,4 +2196,9 @@ public class BindingGeneratorImpl implements BindingGenerator {
         return genCtx;
     }
 
+    @VisibleForTesting
+    static String replaceAllIllegalChars(StringBuilder stringBuilder){
+        return UNICODE_CHAR_PATTERN.matcher(stringBuilder).replaceAll("\\\\\\\\u");
+    }
+
 }