Migrate ietf-type-util to JDT annotations
[mdsal.git] / model / ietf / ietf-type-util / src / test / java / org / opendaylight / mdsal / model / ietf / util / IpUtil.java
index 90f0ab4f88dd736a5ef568c74b0be41e2a2a3eb4..500d59c152ad5947a428fdbab0b880906aa7e4f8 100644 (file)
@@ -5,12 +5,20 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.mdsal.model.ietf.util;
 
-final class IpUtil extends AbstractIetfInetUtil<IpClass, IpClass, IpClass, IpClass, IpClass> {
+import java.util.regex.Pattern;
+import javax.annotation.RegEx;
+
+final class IpUtil extends AbstractIetfInetUtil<IpClass, IpClass, IpClass, IpClass, IpClass, IpClass, IpClass, IpClass,
+        IpClass> {
+
+    @RegEx
+    private static final String IP_V4_REGEX = "^\\d+\\.\\d+\\.\\d+\\.\\d+$";
+    private static final Pattern IP_V4_PATTERN = Pattern.compile(IP_V4_REGEX);
+
     IpUtil() {
-        super(IpClass.class, IpClass.class, IpClass.class, IpClass.class);
+        super(IpClass.class, IpClass.class, IpClass.class, IpClass.class, IpClass.class, IpClass.class);
     }
 
     @Override
@@ -18,28 +26,69 @@ final class IpUtil extends AbstractIetfInetUtil<IpClass, IpClass, IpClass, IpCla
         return addr;
     }
 
+
+    @Override
+    protected IpClass ipv4AddressNoZone(final IpClass addr) {
+        return addr;
+    }
+
     @Override
     protected IpClass ipv6Address(final IpClass addr) {
         return addr;
     }
 
+    @Override
+    protected IpClass ipv6AddressNoZone(final IpClass addr) {
+        return addr;
+    }
+
+    @Override
+    protected IpClass ipv4Prefix(final IpClass addr) {
+        return addr;
+    }
+
+    @Override
+    protected IpClass ipv6Prefix(final IpClass addr) {
+        return addr;
+    }
+
     @Override
     protected String ipv4AddressString(final IpClass addr) {
-        return addr._value;
+        return addr.getValue();
     }
 
     @Override
     protected String ipv6AddressString(final IpClass addr) {
-        return addr._value;
+        return addr.getValue();
     }
 
     @Override
     protected String ipv4PrefixString(final IpClass prefix) {
-        return prefix._value;
+        return prefix.getValue();
     }
 
     @Override
     protected String ipv6PrefixString(final IpClass prefix) {
-        return prefix._value;
+        return prefix.getValue();
+    }
+
+    @Override
+    protected IpClass maybeIpv4Address(final IpClass addr) {
+        return IP_V4_PATTERN.matcher(addr.getValue()).matches() ? addr : null;
+    }
+
+    @Override
+    protected IpClass maybeIpv4AddressNoZone(final IpClass addr) {
+        return maybeIpv4Address(addr);
+    }
+
+    @Override
+    protected IpClass maybeIpv6Address(final IpClass addr) {
+        return addr.getValue().indexOf(':') != -1 ? addr : null;
+    }
+
+    @Override
+    protected IpClass maybeIpv6AddressNoZone(final IpClass addr) {
+        return maybeIpv6Address(addr);
     }
 }
\ No newline at end of file