Do not use pattern matching for simple removal 29/91829/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 3 Aug 2020 16:56:38 +0000 (18:56 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 25 Aug 2020 13:30:10 +0000 (13:30 +0000)
This is a follow-up patch to improvee CR/LF stripping, as this
can be done much more efficiently.

Change-Id: If8104af82228ce94c3b40f3a3cd4f7baa12172ad
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java

index 59fefc5788942f833c87b1d2093ba5d532535058..fa68b7e0eceb449d4e91b8b0028578b9b529ea16 100644 (file)
@@ -7,12 +7,12 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.streams.sse;
 
+import com.google.common.base.CharMatcher;
 import com.google.common.base.Strings;
 import java.io.IOException;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
-import java.util.regex.Pattern;
 import org.glassfish.jersey.media.sse.EventOutput;
 import org.glassfish.jersey.media.sse.OutboundEvent;
 import org.opendaylight.restconf.nb.rfc8040.streams.SessionHandlerInterface;
@@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
 public class SSESessionHandler implements SessionHandlerInterface {
     private static final Logger LOG = LoggerFactory.getLogger(SSESessionHandler.class);
     private static final String PING_PAYLOAD = "ping";
-    // FIXME: this should be a simple CharMatcher
-    private static final Pattern NEWLINE = Pattern.compile("(\\r|\\n)");
+
+    private static final CharMatcher CR_OR_LF = CharMatcher.anyOf("\r\n");
 
     private final ScheduledExecutorService executorService;
     private final BaseListenerInterface listener;
@@ -135,7 +135,7 @@ public class SSESessionHandler implements SessionHandlerInterface {
      */
     private String splitMessageToFragments(final String message) {
         StringBuilder outputMessage = new StringBuilder();
-        String inputmessage = NEWLINE.matcher(message).replaceAll("");
+        String inputmessage = CR_OR_LF.removeFrom(message);
         int length = inputmessage.length();
         for (int i = 0; i < length; i += maximumFragmentLength) {
             outputMessage.append(inputmessage.substring(i, Math.min(length, i + maximumFragmentLength))).append("\r\n");