From 5a94c3e80de37bb7deb63e8965d28653d6503692 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 3 Aug 2020 18:56:38 +0200 Subject: [PATCH] Do not use pattern matching for simple removal 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 --- .../nb/rfc8040/streams/sse/SSESessionHandler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java index 59fefc5788..fa68b7e0ec 100644 --- a/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java +++ b/restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/streams/sse/SSESessionHandler.java @@ -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"); -- 2.36.6