/* * Copyright (c) 2018, 2022 PANTHEON.tech, s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; import static com.google.common.base.Verify.verify; import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; import com.google.common.base.Verify; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import java.util.Arrays; import java.util.regex.Pattern; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; /** * Utility methods for dealing with unions in {@code ietf-routing-types.yang}. */ @Beta @NonNullByDefault public final class IetfRoutingUtils { private static final ImmutableMap ENUMERATED_IPV4_MCAST_SRC = Arrays.stream(Ipv4MulticastSourceAddress.Enumeration.values()).collect( Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv4MulticastSourceAddress::new)); private static final ImmutableMap ENUMERATED_IPV6_MCAST_SRC = Arrays.stream(Ipv6MulticastSourceAddress.Enumeration.values()).collect( Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv6MulticastSourceAddress::new)); private static final ImmutableMap ENUMERATED_TIMERVAR_MS = Arrays.stream(TimerValueMilliseconds.Enumeration.values()) .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueMilliseconds::new)); private static final ImmutableMap ENUMERATED_TIMERVAL_16 = Arrays.stream(TimerValueSeconds16.Enumeration.values()) .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds16::new)); private static final ImmutableMap ENUMERATED_TIMERVAL_32 = Arrays.stream(TimerValueSeconds32.Enumeration.values()) .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds32::new)); private static final Pattern IP_MCAST_GRP_ADDR_IPV4_PATTERN; static { verify(Ipv4Address.PATTERN_CONSTANTS.size() == 1); IP_MCAST_GRP_ADDR_IPV4_PATTERN = Pattern.compile(Ipv4MulticastGroupAddress.PATTERN_CONSTANTS.get(0)); } private IetfRoutingUtils() { // Hidden on purpose } public static IpMulticastGroupAddress ipMulticastGroupAddressFor(final String str) { return IP_MCAST_GRP_ADDR_IPV4_PATTERN.matcher(str).matches() ? new IpMulticastGroupAddress(new Ipv4MulticastGroupAddress(str)) : new IpMulticastGroupAddress(new Ipv6MulticastGroupAddress(str)); } public static Ipv4MulticastSourceAddress ipv4MulticastSourceAddressFor(final String str) { return Ipv4MulticastSourceAddress.Enumeration.forName(str) .map(ENUMERATED_IPV4_MCAST_SRC::get) .orElse(new Ipv4MulticastSourceAddress(new Ipv4Address(str))); } public static Ipv4MulticastSourceAddress ipv4MulticastSourceAddressFor( final Ipv4MulticastSourceAddress.Enumeration enumeration) { return verifyNotNull(ENUMERATED_IPV4_MCAST_SRC.get(requireNonNull(enumeration))); } public static Ipv6MulticastSourceAddress ipv6MulticastSourceAddressFor(final String str) { return Ipv6MulticastSourceAddress.Enumeration.forName(str) .map(ENUMERATED_IPV6_MCAST_SRC::get) .orElse(new Ipv6MulticastSourceAddress(new Ipv6Address(str))); } public static Ipv6MulticastSourceAddress ipv6MulticastSourceAddressFor( final Ipv6MulticastSourceAddress.Enumeration enumeration) { return verifyNotNull(ENUMERATED_IPV6_MCAST_SRC.get(requireNonNull(enumeration))); } public static TimerValueMilliseconds timerValueMillisecondsFor(final String str) { return TimerValueMilliseconds.Enumeration.forName(str) .map(ENUMERATED_TIMERVAR_MS::get) .orElse(new TimerValueMilliseconds(Uint32.valueOf(str))); } public static TimerValueMilliseconds timerValueMillisecondsFor( final TimerValueMilliseconds.Enumeration enumeration) { return verifyNotNull(ENUMERATED_TIMERVAR_MS.get(requireNonNull(enumeration))); } public static TimerValueSeconds16 timerValueSeconds16For(final String str) { return TimerValueSeconds16.Enumeration.forName(str).map(ENUMERATED_TIMERVAL_16::get) .orElse(new TimerValueSeconds16(Uint16.valueOf(str))); } public static TimerValueSeconds16 timerValueSeconds16For( final TimerValueSeconds16.Enumeration enumeration) { return verifyNotNull(ENUMERATED_TIMERVAL_16.get(requireNonNull(enumeration))); } public static TimerValueSeconds32 timerValueSeconds32For(final String defaultValue) { return TimerValueSeconds32.Enumeration.forName(defaultValue) .map(ENUMERATED_TIMERVAL_32::get) .orElse(new TimerValueSeconds32(Uint32.valueOf(defaultValue))); } public static TimerValueSeconds32 timerValueSeconds32For(final TimerValueSeconds32.Enumeration enumeration) { return verifyNotNull(ENUMERATED_TIMERVAL_32.get(requireNonNull(enumeration))); } }