Optimize splitter usage 38/80538/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 22 Feb 2019 11:06:18 +0000 (12:06 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Mar 2019 10:40:24 +0000 (11:40 +0100)
Do not instantiate short-lived splitters, but reuse shared
instances. Also use splitToList() instead of rolling our own
conversion.

JIRA: OPNFLWPLUG-1067
Change-Id: I515a30bbb2b2cbfbd165a593915151cb52dd6474
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/common/IpConversionUtil.java

index 02134cf6e7d1fb73785fa42646f9f3849ecaa173..c9807068749769b234a0fbe8936cbefa9d40609e 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
 import com.google.common.net.InetAddresses;
 import com.google.common.primitives.UnsignedBytes;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
@@ -39,6 +38,8 @@ public final class IpConversionUtil {
     private static final Logger LOG = LoggerFactory.getLogger(IpConversionUtil.class);
     public static final String PREFIX_SEPARATOR = "/";
     public static final Splitter PREFIX_SPLITTER = Splitter.on('/');
+    private static final Splitter PREFIX_TRIM_SPLITTER = PREFIX_SPLITTER.trimResults().omitEmptyStrings();
+    private static final Splitter PERCENT_SPLITTER = Splitter.on('%').trimResults().omitEmptyStrings();
     private static final int INADDR4SZ = 4;
     private static final int INADDR6SZ = 16;
     private static final int INT16SZ = 2;
@@ -238,11 +239,7 @@ public final class IpConversionUtil {
 
 
     private static byte[] canonicalBinaryV6AddressFromString(final String ipv6Address) {
-        Iterable<String> splittedV6Address = Splitter.on("%")
-                .trimResults()
-                .omitEmptyStrings()
-                .split(ipv6Address);
-        List<String> partsV6Address = Lists.newArrayList(splittedV6Address.iterator());
+        List<String> partsV6Address = PERCENT_SPLITTER.splitToList(ipv6Address);
 
         int colonp;
         char ch;
@@ -387,11 +384,7 @@ public final class IpConversionUtil {
 
         int initialMask = 128;
 
-        Iterable<String> splittedV6Prefix = Splitter.on("/")
-                .trimResults()
-                .omitEmptyStrings()
-                .split(ipv6Prefix.getValue());
-        List<String> partsV6Prefix = Lists.newArrayList(splittedV6Prefix.iterator());
+        List<String> partsV6Prefix = PREFIX_TRIM_SPLITTER.splitToList(ipv6Prefix.getValue());
 
         boolean valid = true;