Optimize String formatting 75/85075/5
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 11 Oct 2019 23:44:36 +0000 (01:44 +0200)
committerHema Gopalakrishnan <hema.gopalkrishnan@ericsson.com>
Wed, 4 Dec 2019 05:14:45 +0000 (05:14 +0000)
In some hot paths we end up calling String.format() where a simple
concatenation would suffice. Fix that up.

Change-Id: Ib173fc0599899f40012410b75e243dd3873019a3
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/renderer/ovs/utilities/SouthboundUtils.java
interfacemanager/interfacemanager-impl/src/main/java/org/opendaylight/genius/interfacemanager/servicebindings/flowbased/utilities/FlowBasedServicesUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmExternalTunnelAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/confighelpers/ItmInternalTunnelAddWorker.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/impl/ItmUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/itmdirecttunnels/renderer/ovs/utilities/DirectTunnelUtils.java
itm/itm-impl/src/main/java/org/opendaylight/genius/itm/rpc/ItmManagerRpcService.java

index 44e7e6eb8cb6d7370296f80e7604b96e36aebea9..bc4d1b56005ce656bf0971b0b154f93c1bdbadf0 100644 (file)
@@ -426,17 +426,21 @@ public class SouthboundUtils {
 
     @SuppressFBWarnings("DM_DEFAULT_ENCODING")
     public static String generateOfTunnelName(Uint64 dpId, IfTunnel ifTunnel) {
-        String sourceKey = ifTunnel.getTunnelSource().stringValue();
-        String remoteKey = ifTunnel.getTunnelDestination().stringValue();
+        final String sourceKey;
         if (ifTunnel.isTunnelSourceIpFlow() != null) {
             sourceKey = "flow";
+        } else {
+            sourceKey = ifTunnel.getTunnelSource().stringValue();
         }
+        final String remoteKey;
         if (ifTunnel.isTunnelRemoteIpFlow() != null) {
             remoteKey = "flow";
+        } else {
+            remoteKey = ifTunnel.getTunnelDestination().stringValue();
         }
         String tunnelNameKey = dpId.toString() + sourceKey + remoteKey;
         String uuidStr = UUID.nameUUIDFromBytes(tunnelNameKey.getBytes()).toString().substring(0, 12).replace("-", "");
-        return String.format("%s%s", "tun", uuidStr);
+        return "tun" + uuidStr;
     }
 
     public static boolean isOfTunnel(IfTunnel ifTunnel) {
index a2d46475c4edd8afd05416dd70d8fe38d9dc6b93..c293543683f2127619a68bff314ce6ce56b19116 100644 (file)
@@ -475,7 +475,7 @@ public final class FlowBasedServicesUtils {
                     NwConstants.DEFAULT_EGRESS_SERVICE_INDEX);
             BoundServices
                     serviceInfo =
-                    getBoundServices(String.format("%s.%s", "default", interfaceName),
+                    getBoundServices(defaultInterfaceName(interfaceName),
                             ServiceIndex.getIndex(NwConstants.DEFAULT_EGRESS_SERVICE_NAME,
                                     NwConstants.DEFAULT_EGRESS_SERVICE_INDEX),
                             priority, NwConstants.EGRESS_DISPATCHER_TABLE_COOKIE, instructions);
@@ -489,13 +489,17 @@ public final class FlowBasedServicesUtils {
             NwConstants.DEFAULT_EGRESS_SERVICE_INDEX);
         BoundServices
             serviceInfo =
-            getBoundServices(String.format("%s.%s", "default", interfaceName),
+            getBoundServices(defaultInterfaceName(interfaceName),
                 ServiceIndex.getIndex(NwConstants.DEFAULT_EGRESS_SERVICE_NAME,
                     NwConstants.DEFAULT_EGRESS_SERVICE_INDEX),
                 priority, NwConstants.EGRESS_DISPATCHER_TABLE_COOKIE, instructions);
         IfmUtil.bindService(tx, interfaceName, serviceInfo, ServiceModeEgress.class);
     }
 
+    private static String defaultInterfaceName(final String interfaceName) {
+        return "default." + interfaceName;
+    }
+
     public static void removeIngressFlow(String interfaceName, Uint64 dpId, ManagedNewTransactionRunner txRunner,
             List<ListenableFuture<Void>> futures) {
         if (dpId == null) {
@@ -590,7 +594,7 @@ public final class FlowBasedServicesUtils {
     }
 
     public static String getFlowRef(short tableId, Uint64 dpnId, String infName) {
-        return String.format("%d:%s:%s", tableId, dpnId, infName);
+        return tableId + ":" + dpnId + ":" + infName;
     }
 
     private static String getFlowRef(Uint64 dpnId, short tableId, String iface, short currentServiceIndex) {
index 0e4a0d9aa3b5170f816201471ba8e96a06a89cde..8c4c87f2d1251ab3de19eaae3e106f3afcc23069 100644 (file)
@@ -47,6 +47,7 @@ import org.slf4j.LoggerFactory;
 
 public class ItmExternalTunnelAddWorker {
     private static final Logger LOG = LoggerFactory.getLogger(ItmExternalTunnelAddWorker.class);
+    private static final IpAddress GATEWAY_IP_OBJ = IpAddressBuilder.getDefaultInstance("0.0.0.0");
 
     private final ItmConfig itmConfig;
     private final DPNTEPsInfoCache dpnTEPsInfoCache;
@@ -75,7 +76,7 @@ public class ItmExternalTunnelAddWorker {
                                 + " source IP - {}, DC Gateway IP - {} gateway IP - {}", trunkInterfaceName,
                         interfaceName, firstEndPt.getIpAddress(), extIp, gwyIpAddress);
                 Interface iface = ItmUtils.buildTunnelInterface(teps.getDPNID(), trunkInterfaceName,
-                        String.format("%s %s", ItmUtils.convertTunnelTypetoString(tunType), "Trunk Interface"),
+                        trunkInterface(ItmUtils.convertTunnelTypetoString(tunType)),
                         true, tunType, firstEndPt.getIpAddress(), extIp, false, false,
                         ITMConstants.DEFAULT_MONITOR_PROTOCOL, null, useOfTunnel, tunOptions);
 
@@ -265,7 +266,7 @@ public class ItmExternalTunnelAddWorker {
                         + "source IP - {}, destination IP - {} gateway IP - {}", tunnelIfName, parentIf, srcIp,
                 dstIp, gwyIpAddress);
         Interface hwTunnelIf = ItmUtils.buildHwTunnelInterface(tunnelIfName,
-                String.format("%s %s", tunType.getName(), "Trunk Interface"), true, topoId, srcNodeid, tunType, srcIp,
+                trunkInterface(tunType), true, topoId, srcNodeid, tunType, srcIp,
                 dstIp, gwyIpAddress, monitorEnabled, monitorProtocol, monitorInterval);
         InstanceIdentifier<Interface> ifIID = InstanceIdentifier.builder(Interfaces.class)
                 .child(Interface.class, new InterfaceKey(tunnelIfName)).build();
@@ -289,8 +290,8 @@ public class ItmExternalTunnelAddWorker {
                            Class<? extends TunnelTypeBase> tunType, Boolean monitorEnabled, Integer monitorInterval,
                            Class<? extends TunnelMonitoringTypeBase> monitorProtocol,
                            TypedWriteTransaction<Configuration> tx) {
-        IpAddress gatewayIpObj = IpAddressBuilder.getDefaultInstance("0.0.0.0");
-        IpAddress gwyIpAddress = gatewayIpObj;
+
+        IpAddress gwyIpAddress = GATEWAY_IP_OBJ;
 
         String parentIf = ItmUtils.getInterfaceName(dpnId, portname, vlanId);
         String tunTypeStr = tunType.getName();
@@ -300,7 +301,7 @@ public class ItmExternalTunnelAddWorker {
                         + "source IP - {}, destination IP - {} gateway IP - {}", tunnelIfName, parentIf, srcIp,
                 dstIp, gwyIpAddress);
         Interface extTunnelIf = ItmUtils.buildTunnelInterface(dpnId, tunnelIfName,
-                String.format("%s %s", tunType.getName(), "Trunk Interface"), true, tunType, srcIp, dstIp,
+                trunkInterface(tunType), true, tunType, srcIp, dstIp,
                 false, monitorEnabled, monitorProtocol, monitorInterval, remoteIpFlow, null);
         InstanceIdentifier<Interface> ifIID = InstanceIdentifier.builder(Interfaces.class).child(Interface.class,
                 new InterfaceKey(tunnelIfName)).build();
@@ -318,6 +319,14 @@ public class ItmExternalTunnelAddWorker {
         return true;
     }
 
+    private static String trunkInterface(Class<? extends TunnelTypeBase> tunType) {
+        return trunkInterface(tunType.getName());
+    }
+
+    private static String trunkInterface(String tunType) {
+        return tunType + " Trunk Interface";
+    }
+
     @SuppressFBWarnings("RV_CHECK_FOR_POSITIVE_INDEXOF")
     static String getExternalTunnelKey(String nodeid) {
         final int index = nodeid.indexOf("physicalswitch");
index 772610e68244fcfc2ca2dd736e208b723f90d924..5a150c96daeba0610b2938dcead315d31ae70ed0 100644 (file)
@@ -253,7 +253,7 @@ public final class ItmInternalTunnelAddWorker {
         List<TunnelOptions> tunOptions = ItmUtils.buildTunnelOptions(srcte, itmCfg);
         Boolean isMonitorEnabled = !tunType.isAssignableFrom(TunnelTypeLogicalGroup.class) && isTunnelMonitoringEnabled;
         Interface iface = ItmUtils.buildTunnelInterface(srcDpnId, trunkInterfaceName,
-                String.format("%s %s",ItmUtils.convertTunnelTypetoString(tunType), "Trunk Interface"),
+                trunkInterfaceDecription(ItmUtils.convertTunnelTypetoString(tunType)),
                 true, tunType, srcte.getIpAddress(), dstte.getIpAddress(), true,
                 isMonitorEnabled, monitorProtocol, monitorInterval, useOfTunnel, parentInterfaceName, tunOptions);
         LOG.debug(" Trunk Interface builder - {} ", iface);
@@ -264,6 +264,10 @@ public final class ItmInternalTunnelAddWorker {
         ItmUtils.ITM_CACHE.addInterface(iface);
     }
 
+    private static String trunkInterfaceDecription(String type) {
+        return type + " Trunk Interface";
+    }
+
     private static void createInternalTunnel(TypedWriteTransaction<Configuration> tx, Uint64 srcDpnId,
             Uint64 dstDpnId, Class<? extends TunnelTypeBase> tunType, String trunkInterfaceName) {
         InstanceIdentifier<InternalTunnel> path = InstanceIdentifier.create(TunnelList.class)
@@ -343,7 +347,7 @@ public final class ItmInternalTunnelAddWorker {
         List<TunnelOptions> tunOptions = ItmUtils.buildTunnelOptions(srcte, itmCfg);
         Boolean isMonitorEnabled = !tunType.isAssignableFrom(TunnelTypeLogicalGroup.class) && isTunnelMonitoringEnabled;
         Interface iface = ItmUtils.buildTunnelInterface(srcDpnId, trunkInterfaceName,
-                String.format("%s %s",ItmUtils.convertTunnelTypetoString(srcte.getTunnelType()), "Trunk Interface"),
+                trunkInterfaceDecription(ItmUtils.convertTunnelTypetoString(srcte.getTunnelType())),
                 true, tunType, srcte.getIpAddress(), dstte.getIpAddress(), true,
                 isMonitorEnabled, monitorProtocol, monitorInterval, useOfTunnel, parentInterfaceName, tunOptions);
         LOG.debug("Trunk Interface builder - {} ", iface);
index 676e4e9d6241b9156fd3f8e82f5ec069fe91c24f..13c03419f44fe34fa7415dc60a05fa0aa2ae26ab 100644 (file)
@@ -133,7 +133,7 @@ import org.slf4j.LoggerFactory;
 public final class ItmUtils {
 
     private static final Logger LOG = LoggerFactory.getLogger(ItmUtils.class);
-
+    private static final String ITM_LLDP_FLOW_ENTRY =  "ITM Flow Entry ::" + ITMConstants.LLDP_SERVICE_ID;
     private static final String TUNNEL = "tun";
     private static final IpPrefix DUMMY_IP_PREFIX = IpPrefixBuilder.getDefaultInstance(ITMConstants.DUMMY_PREFIX);
     private static final long DEFAULT_MONITORING_INTERVAL = 100L;
@@ -250,7 +250,7 @@ public final class ItmUtils {
     //ITM cleanup:portname and vlanId are removed, causes change in generated
     //interface name: This has upgrade impact
     public static String getInterfaceName(final Uint64 datapathid, final String portName, final Integer vlanId) {
-        return String.format("%s:%s:%s", datapathid, portName, vlanId);
+        return datapathid + ":" + portName + ":" + vlanId;
     }
 
     public static String getTrunkInterfaceName(String parentInterfaceName,
@@ -263,11 +263,10 @@ public final class ItmUtils {
         } else {
             tunnelTypeStr = ITMConstants.TUNNEL_TYPE_VXLAN;
         }
-        String trunkInterfaceName = String.format("%s:%s:%s:%s", parentInterfaceName, localHostName,
-                remoteHostName, tunnelTypeStr);
+        String trunkInterfaceName = trunkInterfaceName(parentInterfaceName, localHostName, remoteHostName,
+            tunnelTypeStr);
         LOG.trace("trunk interface name is {}", trunkInterfaceName);
-        trunkInterfaceName = String.format("%s%s", TUNNEL, getUniqueIdString(trunkInterfaceName));
-        return trunkInterfaceName;
+        return TUNNEL + getUniqueIdString(trunkInterfaceName);
     }
 
     public static void releaseIdForTrunkInterfaceName(String parentInterfaceName,
@@ -278,17 +277,21 @@ public final class ItmUtils {
         } else {
             tunnelTypeStr = ITMConstants.TUNNEL_TYPE_VXLAN;
         }
-        String trunkInterfaceName = String.format("%s:%s:%s:%s", parentInterfaceName, localHostName,
-                remoteHostName, tunnelTypeStr);
-        LOG.trace("Releasing Id for trunkInterface - {}", trunkInterfaceName);
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("Releasing Id for trunkInterface - {}", trunkInterfaceName(parentInterfaceName, localHostName,
+                remoteHostName, tunnelTypeStr));
+        }
+    }
+
+    private static String trunkInterfaceName(String parentInterfaceName, String localHostName, String remoteHostName,
+            String tunnelType) {
+        return parentInterfaceName + ":" + localHostName + ":" + remoteHostName + ":" + tunnelType;
     }
 
     public static String getLogicalTunnelGroupName(Uint64 srcDpnId, Uint64 destDpnId) {
-        String tunnelTypeStr = ITMConstants.TUNNEL_TYPE_LOGICAL_GROUP_VXLAN;
-        String groupName = String.format("%s:%s:%s", srcDpnId.toString(), destDpnId.toString(), tunnelTypeStr);
+        String groupName = srcDpnId + ":" + destDpnId + ":" + ITMConstants.TUNNEL_TYPE_LOGICAL_GROUP_VXLAN;
         LOG.trace("logical tunnel group name is {}", groupName);
-        groupName = String.format("%s%s", TUNNEL, getUniqueIdString(groupName));
-        return groupName;
+        return TUNNEL +  getUniqueIdString(groupName);
     }
 
     public static InetAddress getInetAddressFromIpAddress(IpAddress ip) {
@@ -474,7 +477,7 @@ public final class ItmUtils {
             FlowEntity terminatingServiceTableFlowEntity = MDSALUtil
                     .buildFlowEntity(dpnId, NwConstants.INTERNAL_TUNNEL_TABLE,
                             getFlowRef(NwConstants.INTERNAL_TUNNEL_TABLE, ITMConstants.LLDP_SERVICE_ID),
-                            5, String.format("%s:%d","ITM Flow Entry :", ITMConstants.LLDP_SERVICE_ID), 0, 0,
+                            5, ITM_LLDP_FLOW_ENTRY, 0, 0,
                             COOKIE_ITM_LLD, mkMatches, mkInstructions);
             mdsalManager.addFlow(tx, terminatingServiceTableFlowEntity);
         } catch (Exception e) {
@@ -517,7 +520,7 @@ public final class ItmUtils {
     }
 
     public static String getHwParentIf(String topoId, String srcNodeid) {
-        return String.format("%s:%s", topoId, srcNodeid);
+        return topoId + ":" + srcNodeid;
     }
 
     /**
index c927ed18845b716bbbea755c2a5c9098395fa927..341356c0dbba13a880219375a710a154a7bb049e 100644 (file)
@@ -599,9 +599,8 @@ public final class DirectTunnelUtils {
     }
 
     public static String generateOfPortName(Uint64 dpId, String tunnelType) {
-        String trunkInterfaceName = String.format("%s:%s", dpId.toString(), tunnelType);
-        String uuidStr = UUID.nameUUIDFromBytes(trunkInterfaceName.getBytes(StandardCharsets.UTF_8)).toString()
+        String trunkInterfaceName = dpId + ":" + tunnelType;
+        return "of" + UUID.nameUUIDFromBytes(trunkInterfaceName.getBytes(StandardCharsets.UTF_8)).toString()
                 .substring(0, 12).replace("-", "");
-        return String.format("%s%s", "of", uuidStr);
     }
 }
index 28650a13d3d38a4663a9b8d02825dc794521faa4..cf6a607d6ca88fa00a30e4a6c29ed9b541f1a31b 100644 (file)
@@ -573,7 +573,7 @@ public class ItmManagerRpcService implements ItmRpcService {
 
         Flow terminatingServiceTableFlow = MDSALUtil.buildFlowNew(NwConstants.INTERNAL_TUNNEL_TABLE,
                 getFlowRef(NwConstants.INTERNAL_TUNNEL_TABLE, serviceId), 5,
-                String.format("%s:%d", "ITM Flow Entry ", serviceId), 0, 0,
+                "ITM Flow Entry :" + serviceId, 0, 0,
                 Uint64.fromLongBits(ITMConstants.COOKIE_ITM.longValue() + serviceId.toJava()), mkMatches,
                 input.getInstruction());