Add NoZone support
[mdsal.git] / model / ietf / ietf-inet-types-2013-07-15 / src / main / java / org / opendaylight / yang / gen / v1 / urn / ietf / params / xml / ns / yang / ietf / inet / types / rev130715 / IetfInetUtil.java
1 /*
2  * Copyright (c) 2016 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715;
9
10 import com.google.common.annotations.Beta;
11 import com.google.common.base.Preconditions;
12 import java.net.Inet4Address;
13 import java.net.Inet6Address;
14 import java.net.InetAddress;
15 import java.net.UnknownHostException;
16 import javax.annotation.Nonnull;
17 import org.opendaylight.mdsal.model.ietf.util.AbstractIetfInetUtil;
18
19 /**
20  * A set of utility methods to efficiently instantiate various ietf-inet-types DTOs.
21  */
22 @Beta
23 public final class IetfInetUtil extends AbstractIetfInetUtil<Ipv4Address, Ipv4AddressNoZone, Ipv4Prefix, Ipv6Address,
24         Ipv6AddressNoZone, Ipv6Prefix, IpAddress, IpAddressNoZone, IpPrefix> {
25     public static final IetfInetUtil INSTANCE = new IetfInetUtil();
26
27     private IetfInetUtil() {
28         super(Ipv4AddressNoZone.class, Ipv4Prefix.class, Ipv6AddressNoZone.class, Ipv6Prefix.class);
29     }
30
31     @Nonnull public static InetAddress inetAddressFor(@Nonnull final IpAddressNoZone addr) {
32         final Ipv4AddressNoZone v4 = addr.getIpv4AddressNoZone();
33         if (v4 != null) {
34             return inet4AddressFor(v4);
35         }
36         final Ipv6AddressNoZone v6 = addr.getIpv6AddressNoZone();
37         Preconditions.checkArgument(v6 != null, "Address %s is neither IPv4 nor IPv6", addr);
38         return inet6AddressFor(v6);
39     }
40
41     @Nonnull public static Inet4Address inet4AddressFor(@Nonnull final Ipv4AddressNoZone addr) {
42         try {
43             return (Inet4Address) InetAddress.getByAddress(ipv4AddressBytes(addr));
44         } catch (UnknownHostException e) {
45             throw new IllegalArgumentException("Invalid address " + addr, e);
46         }
47     }
48
49     @Nonnull public static Inet6Address inet6AddressFor(@Nonnull final Ipv6AddressNoZone addr) {
50         try {
51             return (Inet6Address) InetAddress.getByAddress(ipv6AddressBytes(addr));
52         } catch (UnknownHostException e) {
53             throw new IllegalArgumentException("Invalid address " + addr, e);
54         }
55     }
56
57     @Nonnull public static byte[] ipv4AddressBytes(@Nonnull final Ipv4AddressNoZone addr) {
58         final String str = addr.getValue();
59         return ipv4AddressBytes(str, str.length());
60     }
61
62     @Nonnull public static byte[] ipv6AddressBytes(@Nonnull final Ipv6AddressNoZone addr) {
63         final String str = addr.getValue();
64         return ipv6AddressBytes(str, str.length());
65     }
66
67     @Override
68     protected IpAddress ipv4Address(final Ipv4Address addr) {
69         return new IpAddress(addr);
70     }
71
72     @Override
73     protected IpAddressNoZone ipv4AddressNoZone(final Ipv4AddressNoZone addr) {
74         return new IpAddressNoZone(addr);
75     }
76
77     @Override
78     protected IpAddress ipv6Address(final Ipv6Address addr) {
79         return new IpAddress(addr);
80     }
81
82     @Override
83     protected IpAddressNoZone ipv6AddressNoZone(final Ipv6AddressNoZone addr) {
84         return new IpAddressNoZone(addr);
85     }
86
87     @Override
88     protected IpPrefix ipv4Prefix(final Ipv4Prefix addr) {
89         return new IpPrefix(addr);
90     }
91
92     @Override
93     protected IpPrefix ipv6Prefix(final Ipv6Prefix addr) {
94         return new IpPrefix(addr);
95     }
96
97     @Override
98     protected String ipv4AddressString(final Ipv4Address addr) {
99         return addr.getValue();
100     }
101
102     @Override
103     protected String ipv6AddressString(final Ipv6Address addr) {
104         return addr.getValue();
105     }
106
107     @Override
108     protected String ipv4PrefixString(final Ipv4Prefix prefix) {
109         return prefix.getValue();
110     }
111
112     @Override
113     protected String ipv6PrefixString(final Ipv6Prefix prefix) {
114         return prefix.getValue();
115     }
116
117     @Override
118     protected Ipv4Address maybeIpv4Address(final IpAddress addr) {
119         return addr.getIpv4Address();
120     }
121
122     @Override
123     protected Ipv6Address maybeIpv6Address(final IpAddress addr) {
124         return addr.getIpv6Address();
125     }
126 }