Eliminate use of String.replace/replaceAll() 91/62991/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Sep 2017 17:09:46 +0000 (19:09 +0200)
committerTom Pantelis <tompantelis@gmail.com>
Mon, 11 Sep 2017 21:56:57 +0000 (21:56 +0000)
Use a pre-compiled pattern to do the same task.

Change-Id: Ie864494a8c5a7b24a31d9d416b339b6f33eb5d42
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/YangTextTemplate.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend

index 58b90e93c130ba203fbd3a05500c582682d18a70..bc29878f9c88d13189f04f27bf61d453afabab00 100644 (file)
@@ -11,10 +11,12 @@ import com.google.common.base.CharMatcher;
 import com.google.common.base.Strings;
 import com.google.common.collect.Iterables;
 import java.util.StringTokenizer;
+import java.util.regex.Pattern;
 import org.opendaylight.yangtools.yang.common.QName;
 
 final class YangTextTemplate {
     private static final CharMatcher NEWLINE_OR_TAB = CharMatcher.anyOf("\n\t");
+    private static final Pattern MULTIPLE_SPACES_PATTERN = Pattern.compile(" +");
 
     private YangTextTemplate() {
         throw new UnsupportedOperationException();
@@ -52,14 +54,11 @@ final class YangTextTemplate {
 
         final StringBuilder sb = new StringBuilder();
         final StringBuilder lineBuilder = new StringBuilder();
-        boolean isFirstElementOnNewLineEmptyChar = false;
         final String lineIndent = Strings.repeat(" ", nextLineIndent);
-
-        String formattedText = NEWLINE_OR_TAB.removeFrom(text);
-        formattedText = formattedText.replaceAll(" +", " ");
-
+        final String formattedText = MULTIPLE_SPACES_PATTERN.matcher(NEWLINE_OR_TAB.removeFrom(text)).replaceAll(" ");
         final StringTokenizer tokenizer = new StringTokenizer(formattedText, " ", true);
 
+        boolean isFirstElementOnNewLineEmptyChar = false;
         while (tokenizer.hasMoreElements()) {
             final String nextElement = tokenizer.nextElement().toString();
 
index f7bdabe2cdd1696bf048d9499cbab648e97bf2ee..7a8bd9a8b01ec5a045124a16cf77bee991d711a7 100644 (file)
@@ -37,6 +37,7 @@ abstract class BaseTemplate {
     private static final CharMatcher TAB_MATCHER = CharMatcher.is('\t')
     private static final Pattern SPACES_PATTERN = Pattern.compile(" +")
     private static final Splitter NL_SPLITTER = Splitter.on(NL_MATCHER)
+    private static final Pattern TAIL_COMMENT_PATTERN = Pattern.compile("*/", Pattern.LITERAL);
 
     new(GeneratedType _type) {
         if (_type === null) {
@@ -224,10 +225,7 @@ abstract class BaseTemplate {
             return description;
         }
 
-        var ret = description.replace("*/", "&#42;&#47;");
-        ret = AMP_MATCHER.replaceFrom(ret, "&amp;");
-
-        return ret;
+        return AMP_MATCHER.replaceFrom(TAIL_COMMENT_PATTERN.matcher(description).replaceAll("&#42;&#47;"), "&amp;");
     }
 
     def protected String formatDataForJavaDoc(GeneratedType type, String additionalComment) {