Use IetfInetUtil for Ipv4Address instantiation 01/35101/4
authorRobert Varga <rovarga@cisco.com>
Fri, 19 Feb 2016 14:46:16 +0000 (15:46 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 22 Feb 2016 15:15:31 +0000 (16:15 +0100)
Utility class for faster instantiation.

Change-Id: I1caabf2ff99ba51afe715c5159d97140b4562b59
Signed-off-by: Robert Varga <rovarga@cisco.com>
mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/serializer/address/Ipv4Serializer.java
mappingservice/lisp-proto/src/main/java/org/opendaylight/lispflowmapping/lisp/util/LispAddressUtil.java
mappingservice/southbound/src/main/java/org/opendaylight/lispflowmapping/southbound/util/LispNotificationHelper.java

index da3f0dcd59f4f122a12768e071195b9e48aa88d8..852c701379a9324e6b1975cf5e53638ba84d0d55 100644 (file)
@@ -13,6 +13,7 @@ import java.net.UnknownHostException;
 import java.nio.ByteBuffer;
 
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana.afn.safi.rev130704.AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
@@ -106,12 +107,7 @@ public final class Ipv4Serializer extends LispAddressSerializer {
         byte[] ipBuffer = new byte[4];
         InetAddress address = null;
         buffer.get(ipBuffer);
-        try {
-            address = InetAddress.getByAddress(ipBuffer);
-        } catch (UnknownHostException e) {
-            LOG.debug("Unknown host {}", ipBuffer, e);
-        }
-        return new Ipv4Address(address.getHostAddress());
+        return IetfInetUtil.INSTANCE.ipv4AddressFor(ipBuffer);
     }
 
     protected interface Length {
index 050ad79bfcaa7a8fc4ec04fc9e8047a29feb3f2b..760c9d1247ce2f457cdf939f7b3638f031d81c1a 100644 (file)
@@ -66,6 +66,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.addres
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop.LrsBits;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.HopBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IetfInetUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -124,10 +125,10 @@ public final class LispAddressUtil {
     public static Address addressFromInet(InetAddress address) {
         if (address instanceof Inet4Address) {
             return (Address) new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder()
-            .setIpv4(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address(address.getHostAddress())).build();
+            .setIpv4(IetfInetUtil.INSTANCE.ipv4AddressFor(address)).build();
         } else if (address instanceof Inet6Address) {
             return (Address) new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Builder()
-            .setIpv6(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address(address.getHostAddress())).build();
+            .setIpv6(IetfInetUtil.INSTANCE.ipv6AddressFor(address)).build();
         }
         return null;
     }
@@ -358,18 +359,18 @@ public final class LispAddressUtil {
     }
 
     public static Eid asIpv4PrefixEid(Ipv4Address addr, InstanceIdType vni) {
-        return toEid(new IpPrefix(new Ipv4Prefix(addr.getValue() + "/32")), vni);
+        return toEid(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(addr)), vni);
     }
 
     public static Eid asIpv6PrefixEid(Ipv6Address addr, InstanceIdType vni) {
-        return toEid(new IpPrefix(new Ipv4Prefix(addr.getValue() + "/128")), vni);
+        return toEid(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(addr)), vni);
     }
 
     public static Eid asIpv4PrefixEid(Eid eid, Inet4Address address, short mask) {
         EidBuilder builder = new EidBuilder();
         builder.setAddressType(eid.getAddressType());
         builder.setVirtualNetworkId(eid.getVirtualNetworkId());
-        builder.setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(new Ipv4Prefix(getStringPrefix(address, mask))).build());
+        builder.setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(address, mask)).build());
         return builder.build();
     }
 
@@ -377,7 +378,7 @@ public final class LispAddressUtil {
         EidBuilder builder = new EidBuilder();
         builder.setAddressType(eid.getAddressType());
         builder.setVirtualNetworkId(eid.getVirtualNetworkId());
-        builder.setAddress(new Ipv6PrefixBuilder().setIpv6Prefix(new Ipv6Prefix(getStringPrefix(address, mask))).build());
+        builder.setAddress(new Ipv6PrefixBuilder().setIpv6Prefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(address, mask)).build());
         return builder.build();
     }
 
@@ -455,14 +456,6 @@ public final class LispAddressUtil {
         return asKeyValueAddressRloc(new SimpleAddress(new DistinguishedNameType(key)), value);
     }
 
-    private static String getStringPrefix(InetAddress address, short mask) {
-        StringBuilder sb = new StringBuilder();
-        sb.append(address.getHostAddress());
-        sb.append('/');
-        sb.append(mask);
-        return sb.toString();
-    }
-
     public static SourceDestKey asSrcDst(String src, String dst, int smask, int dmask) {
         SourceDestKeyBuilder builder = new SourceDestKeyBuilder();
         builder.setSource(new SimpleAddress(asIpPrefix(src, smask)));
index 14a3059dd26abc499e85a3b882d82d76201fb7f8..207a3b148b1cc96938fc949d7d0d3317d658f68c 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.lispflowmapping.southbound.util;
 
-import java.net.Inet4Address;
 import java.net.InetAddress;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapnotifynotification.MapNotify;
@@ -18,9 +17,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.ma
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.mapreplynotification.MapReplyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequest;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.maprequestnotification.MapRequestBuilder;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
 
 public final class LispNotificationHelper {
     // Utility class, should not be instantiated
@@ -59,10 +57,7 @@ public final class LispNotificationHelper {
         if (inetAddress == null) {
             inetAddress = InetAddress.getLoopbackAddress();
         }
-        if (inetAddress instanceof Inet4Address) {
-            return new IpAddress(new Ipv4Address(inetAddress.getHostAddress()));
-        } else {
-            return new IpAddress(new Ipv6Address(inetAddress.getHostAddress()));
-        }
+
+        return IetfInetUtil.INSTANCE.ipAddressFor(address);
     }
 }