Unify prefix splitting 32/35632/3
authorRobert Varga <robert.varga@pantheon.sk>
Mon, 22 Feb 2016 14:00:52 +0000 (15:00 +0100)
committerRobert Varga <rovarga@cisco.com>
Wed, 2 Mar 2016 23:47:42 +0000 (00:47 +0100)
Instead of duplicating code, create a static utility method to perform
the string split.

Change-Id: I3c25b1cff00fa61e037dc94fb9951fd998567455
Signed-off-by: Robert Varga <robert.varga@pantheon.sk>
(cherry picked from commit cbd110c50d2b0670272aa2ecb954daaeb9258ae7)

model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java

index 3590a7a6932dc875c817d679104ffb89d9ec37ea..4c79def9d3327c170cdc658ea012c72791e9274f 100644 (file)
@@ -167,10 +167,7 @@ public abstract class AbstractIetfInetUtil<A4, P4, A6, P6, A> {
     }
 
     @Nonnull public final Entry<A4, Integer> splitIpv4Prefix(@Nonnull final P4 prefix) {
-        final String str = ipv4PrefixString(prefix);
-        final int slash = str.lastIndexOf('/');
-        final A4 addr = address4Factory.newInstance(str.substring(0, slash));
-        return new SimpleImmutableEntry<>(addr, Integer.valueOf(str.substring(slash + 1)));
+        return splitPrefix(address4Factory, ipv4PrefixString(prefix));
     }
 
     /**
@@ -273,16 +270,19 @@ public abstract class AbstractIetfInetUtil<A4, P4, A6, P6, A> {
     }
 
     @Nonnull public final Entry<A6, Integer> splitIpv6Prefix(@Nonnull final P6 prefix) {
-        final String str = ipv6PrefixString(prefix);
-        final int slash = str.lastIndexOf('/');
-        final A6 addr = address6Factory.newInstance(str.substring(0, slash));
-        return new SimpleImmutableEntry<>(addr, Integer.valueOf(str.substring(slash + 1)));
+        return splitPrefix(address6Factory, ipv6PrefixString(prefix));
     }
 
     private static <T> T prefixToAddress(final StringValueObjectFactory<T> factory, final String str) {
         return factory.newInstance(str.substring(0, str.lastIndexOf('/')));
     }
 
+    private static <T> Entry<T, Integer> splitPrefix(final StringValueObjectFactory<T> factory, final String str) {
+        final int slash = str.lastIndexOf('/');
+        return new SimpleImmutableEntry<>(factory.newInstance(str.substring(0, slash)),
+                Integer.valueOf(str.substring(slash + 1)));
+    }
+
     private static void appendIpv4String(final StringBuilder sb, final byte[] bytes) {
         Preconditions.checkArgument(bytes.length == 4, "IPv4 address length is 4 bytes");