Optimize IpConversionUtil.isArbitraryBitMask() string splitting 41/80541/6
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 22 Feb 2019 11:48:06 +0000 (12:48 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 7 Mar 2019 10:41:11 +0000 (11:41 +0100)
We do not need two intermediate lists to iterate over the result
of splitting. We also can pre-compile the splitting pattern.

JIRA: OPNFLWPLUG-1067
Change-Id: I2ff6b50d203ef90d8953364368cbbbe289d34935
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 2fd98c83af73c8e79876bde4446e9add991ee58f..d1b217005141fb920d3a52fd023188ed51dd3d8f 100644 (file)
@@ -22,6 +22,7 @@ import java.util.Arrays;
 import java.util.BitSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.regex.Pattern;
 import javax.annotation.Nullable;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
@@ -40,6 +41,7 @@ public final class IpConversionUtil {
     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 Pattern BITMASK_SPLIT_PATTERN = Pattern.compile("(?!^)");
     private static final int INADDR4SZ = 4;
     private static final int INADDR6SZ = 16;
     private static final int INT16SZ = 2;
@@ -711,8 +713,7 @@ public final class IpConversionUtil {
         String maskInBits;
         // converting byte array to bits
         maskInBits = new BigInteger(1, byteMask).toString(2);
-        ArrayList<String> stringMaskArrayList = new ArrayList<>(Arrays.asList(maskInBits.split("(?!^)")));
-        for (String string : stringMaskArrayList) {
+        for (String string : BITMASK_SPLIT_PATTERN.split(maskInBits)) {
             integerMaskArrayList.add(Integer.parseInt(string));
         }